【发布时间】:2015-07-08 03:47:11
【问题描述】:
我正在尝试构建一个可执行的 jar。当我通过 Eclipse 从项目中执行代码时,它运行良好,但当从 CMD 行执行 jar 时却不行。看起来类路径有些问题,但我不确定......我的 pom 文件中有以下依赖项:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
<scope>compile</scope>
</dependency>
以及pom文件标签中的以下maven插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>org.swx.nursing.tools.quicklaunch.executor.QuickLaunch</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
然后我使用以下内容来构建 jar: mvn 干净安装
当我执行 jar 时,我看到以下消息,我不确定为什么:
C:\Workspaces\CCQueryHotkey\quicklaunch\target>java -jar quicklaunch-0.0.1-SNAPSHOT.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.swx.nursing.tools.quicklaunch.executor.QuickLaunch.<clinit>(QuickLaunch.java:18)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
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)
... 1 more
我看到 SLF4j jar 在 maven 拉取的项目文件夹中。
请指教!
谢谢
【问题讨论】:
标签: java maven manifest pom.xml executable-jar