我创建了一个需要包含 tools.jar 的 Maven 项目。我已将 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 clean package assembly:single”构建了 jar 这已经创建了一个名为 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
但是当我将它作为可运行的 jar 从 eclipse 导出时,它按预期工作。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”。