当前位置: 首页 > 知识库问答 >
问题:

Storm在我自己的jar中找不到jar类路径

董畅
2023-03-14

在尝试学习如何使用storm时。我决定编译我自己的著名WordCount拓扑实例,看看它是如何实现的。代码与示例完全相同。(https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/org/apache/storm/starter/WordCountTopology.java)

然而,每当我尝试运行jar时,我都会收到错误消息,说我无法找到或加载主类。我可以毫无问题地运行storm附带的默认示例jar(如在bellow中),因此它不应该是调用语法问题。

bin/storm jar lib/"name".jar "classpath"

Maven毫无问题地创建了jar,最初我假设我没有在pom文件中正确地排除storm依赖,但它应该是这样的,对吗?

<dependencies>
    <dependency>
        <groupId>org.apache.storm</groupId>
        <artifactId>storm-core</artifactId>
        <version>1.0.2</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

这可能是一个模糊的问题,但老实说,由于代码是相同的,所以不确定在哪里解决它,所以生成一个成功的jar不应该是一个问题,对吗?

共有2个答案

马德宇
2023-03-14
  1. Stormjar需要两个参数;第一个:jar;第二个:要运行的主类的完整限定名。
  2. 如果要排除Storm依赖关系,错误应该是不同的;虽然pom.xml比你所拥有的更复杂。见此答案。
  3. 有时,您必须指定jar的完整路径。

总之:

storm jar /full/path/to/your/jar com.foo.bar.MainClass
冯星阑
2023-03-14

首先,删除<代码>

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          [...]
          <archive>
            <manifest>
              <mainClass>org.sample.App</mainClass>      // specify your main class here.
            </manifest>
          </archive>
        </configuration>
        [...]
      </plugin>
      [...]
</project>

这将生成一个可执行的jar。

 类似资料:
  • 问题内容: 我在JBoss 4.3-eap上部署带有捆绑的war,jar和配置文件(.properties文件)的耳朵时遇到问题。这是我的耳朵结构: 我的jboss-app.xml中包含以下内容: 我的application.xml看起来像这样: 基本上,在部署耳朵时,我遇到了一个问题,其中我的一场大战无法在文件(r)中找到类。我认为这是由于战争没有找到该库,即使它在文件夹/ classpath中

  • 我有一个Java/Selenium/TestNG/Maven项目。我可以成功创建myproj-0.0.1-SNAPSHOT。jar文件。当我尝试运行它时,我得到一个错误: 我的主要目标是能够运行此快照。jar文件,用于在远程计算机上运行我的测试用例。 我在pom中使用了一个构建插件。xml: 构建项目时,我使用的是maven命令:“mvn clean package shade:shade” 这就

  • 问题内容: 是否可以指定一个Java ,其中包含另一个JAR文件中包含的JAR文件? 问题答案: 如果您试图创建一个包含应用程序及其所需库的jar,则有两种方法(我知道)。第一个是One-Jar,它使用特殊的类加载器来允许jar的嵌套。第二个是UberJar(或Shade),它会爆炸包含的库并将所有类放在顶级jar中。 我还应该提到UberJar和Shade分别是Maven1和Maven2的插件。

  • 问题内容: 我需要阅读该文件,该文件提供了我的课程,但是当我使用时: 我MANIFEST从第一个加载到Java运行时中就得到了。 我的应用程序将从或运行, 所以我无法访问自己的文件。 我实际上是想从启动的中读取属性,因此可以将这些包公开给Felix。有任何想法吗? 问题答案: 你可以执行以下两项操作之一: 调用并遍历返回的URL集合,将它们作为清单读取,直到找到你的URL: 你可以尝试检查是否是的

  • 我已经尝试了几种方法(谷歌,堆栈溢出…)和几天解决以下错误没有成功。只有在运行应用程序时才会发生此错误。编译不受影响。 org.databene.commons。配置错误:未找到类:“org.databene.benerator.engine”。DefaultBeneratorFactory'位于org.databene.commons.ExceptionMapper.configurationE

  • 我一直在努力让FindBugs(2.0.1)作为命令行Ant构建的一部分运行。我下载了FindBugs JAR并将其提取到/home/myuser/java/repo/umd/FindBugs/2.0.1/findBugs-2.0.1: 正如您在屏幕截图中看到的,在/home/myuser/java/repo/umd/findbugs/2.0.1/findbugs-2.0.1/lib下面有一个名为