gpt4 book ai didi

java - 为什么我可以通过指定路径作为参数来运行这个由 Maven 打包的文件,但不能通过在路径变量中永久设置路径来运行?

转载 作者:行者123 更新时间:2023-12-01 14:30:02 26 4
gpt4 key购买 nike

所以,我试图运行这个命令:

java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology

在 ./storm/starter/中运行 ExclamationTopology 类,但它不起作用。

然后someone所以建议我将命令更改为:

java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar:/Users/xxx/storm-0.8.2/storm-0.8.2.jar:/Users/xxx/storm-0.8.2/lib/*:/Users/xxx/storm-0.8.2/conf/s torm.yaml storm.starter.ExclamationTopology

而且它成功了。所以我想我只需要将这些路径添加到路径变量中就可以了,所以我改变了我的路径,这就是现在的样子:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/xxx/storm-0.8.2/storm-0.8.2.jar:/Users/xxx/storm-0.8.2/lib/*:/Users/xxx/storm-0.8.2/conf/s​torm.yaml

但我仍然无法运行第一个命令。谁能告诉我为什么吗?我基本上想要的是运行第一个命令;它只是需要设置正确的路径,对吧?我相信这正是我所做的。

编辑:

这是第一个命令返回的错误:

$ java -cp ./target/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar storm.starter.ExclamationTopology
Exception in thread "main" java.lang.NoClassDefFoundError: backtype/storm/topology/IRichSpout
Caused by: java.lang.ClassNotFoundException: backtype.storm.topology.IRichSpout
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

最佳答案

您需要将 Storm 依赖项添加到您的类路径中 - 目前未包含它,因为它在 m2-pom.xml 中标记为“已提供”,请将其更改为“编译”:

<dependency>
<groupId>storm</groupId>
<artifactId>storm</artifactId>
<version>0.8.2</version>
<scope>compile</scope>
</dependency>

关于java - 为什么我可以通过指定路径作为参数来运行这个由 Maven 打包的文件,但不能通过在路径变量中永久设置路径来运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com