我为你做了一个胖jar Apache Storm
包含所有依赖项的拓扑。我用过 mvn clean dependency:copy-dependencies package
命令来创建这个jar。当我将这个jar提交给storm时,它会给出以下错误:
Caused by: java.lang.ClassNotFoundException: com.sun.tools.corba.se.idl.InvalidArgument
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
我想知道如何解决这个错误?哪个jar文件包含这个类?
编辑:添加依赖项部分 pom.xml
```
com.ads.iot
commons-for-iot
0.0.1-SNAPSHOT
org.apache.storm
storm-kafka
0.10.0-beta1
org.apache.storm
storm-hbase
0.10.0-beta1
org.apache.storm
storm-core
0.10.0-beta1
provided
jdk.tools
jdk.tools
1.7.0_21
system
${JAVA_HOME}/lib/tools.jar
编辑pom.xml的2:plugins部分
2条答案
按热度按时间xxe27gdn1#
你需要把这样的东西添加到你的
pom.xml
```org.apache.maven.plugins
maven-dependency-plugin
2.9
unpack
prepare-package
unpack
jdk.tools
jdk.tools
1.7.0_21
jar
false
${project.build.directory}/classes
**
shyt4zoc2#
您要部署到哪个版本的java?浏览你的相依关系,我发现
com/sun/tools/corba/se/idl/InvalidArgument.class
在tools.jar
jdk1.7的。但是在jdk1.8中没有这样的库。事实上,1.8的一个变化是从中删除了旧的、非公共的APIcom.sun
Package 。恐怕这里需要升级您的代码(到当前的公共api)。