我创建了一个maven项目,其中需要包含tools.jar。我已将jar添加到lib文件夹中,并将以下内容包含在pom.xml中。
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<scope>system</scope>
<version>1.8.0</version>
<systemPath>${project.basedir}\src\lib\tools.jar</systemPath>
</dependency>
[还添加了以下插件来创建项目的可执行jar。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<mainClass>umlparser.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
我使用“ MVN清洁包装组装件:单个”制造了罐子这样就创建了一个名为myproject-jar-with-dependencies的可执行jar文件。
但是当我尝试使用java -jar运行jar文件时,无法获取tools.jar。我收到以下错误
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javadoc/Main
at org.umlgraph.doclet.UmlGraph.main(UmlGraph.java:70)
at umlparser.Main.main(Main.java:19)
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javadoc.Main
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
但是当我从eclipse中将其导出为可运行的jar时,它可以按预期工作。Maven包有什么问题?我在这里想念什么吗?
编辑
我试图从java_home而不是项目路径中导入tools.jar依赖项。
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.8.0_241</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
还是我遇到同样的问题。
注意:我的程序中未使用tools.jar。我所包含的一个罐子正在使用它-“ UMLGraph.jar”。
您添加的com.sun:tools
依赖项具有system
范围。具有provided
和system
范围的依赖项将不包括在此类打包的工件中。