java.lang.noclassdeffounderror:com/sun/tools/corba/se/idl/invalidargument

kd3sttzy  于 2021-06-21  发布在  Storm
关注(0)|答案(2)|浏览(270)

我为你做了一个胖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部分
xxe27gdn

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
**





它将依赖jar复制并提取到 `target/classes` ,这是文件夹 `maven-jar-plugin` 期望它必须打包的所有类。这应该与 `mvn clean package` .
更新
在您的情况下,需要安装 `tools.jar` 先进入maven存储库(https://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html),因为 `maven-dependency-plugin` 在那里查找jar文件。
shyt4zoc

shyt4zoc2#

您要部署到哪个版本的java?浏览你的相依关系,我发现 com/sun/tools/corba/se/idl/InvalidArgument.classtools.jar jdk1.7的。但是在jdk1.8中没有这样的库。事实上,1.8的一个变化是从中删除了旧的、非公共的API com.sun Package 。
恐怕这里需要升级您的代码(到当前的公共api)。

相关问题