java - 类路径已设置,但仍然收到 NoClassDefFoundError

标签 java maven jar classpath

我正在尝试将一个非常简单的应用程序打包到一个 jar 中以分发给用户。我在 Mac OS X 10.6.8 上使用 Eclipse Indigo 和 m2e 插件。

我使用 Maven build: package 目标将其打包为 jar。如果我双击 jar 将其打开,GUI 将打开并且似乎正在工作,但是当我单击执行按钮时,什么也没有发生。 (如果我在 Eclipse 中运行为...,该程序可以正常工作)。

如果我尝试从命令行运行 jar,它甚至不会打开 GUI,我会收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: str-profile-comparison-0/0/1-SNAPSHOT    /jar
Caused by: java.lang.ClassNotFoundException: str-profile-comparison-0.0.1-SNAPSHOT.jar
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

我从 jar 中提取了 list 文件,以检查类路径,它看起来像这样:

Manifest-Version: 1.0
Built-By: username
Build-Jdk: 1.6.0_24
Class-Path: poi-3.7.jar poi-ooxml-3.7.jar poi-examples-3.7.jar xmlbean
s-2.3.0.jar stax-api-1.0.1.jar dom4j-1.6.1.jar xml-apis-1.0.b2.jar po
i-ooxml-schemas-3.7.jar geronimo-stax-api_1.0_spec-1.0.jar poi-scratc
hpad-3.7.jar junit-4.8.2.jar
Created-By: Apache Maven
Main-Class: com.{companyname}.strprofilecomparison.logic.StrComparatorGUI
key: value
url:
mode: development
Archiver-Version: Plexus Archiver

我对这里发生的事情有几个疑问:

  1. 为什么当我双击 jar 文件时 GUI 会打开,但当我尝试在命令行运行它时却不会打开?

  2. 我猜类路径需要定义我正在使用的外部 jar 的绝对路径,如何在 POM 文件中设置它?

最佳答案

该 list 表明您的所有依赖项都与您的 jar 位于同一目录中。如果这不是真的,那就不要去。

就个人而言,我会使用 appassembler 插件来制作一个具有 shell 脚本来启动它的设备。或者使用阴影插件来制作一个仅包含它们的 uberjar。或者了解 OSX stub 以制作 OSX 正确的 .app 应用程序。

关于java - 类路径已设置,但仍然收到 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808209/

相关文章:

java - 在 GWT 中,是否可以将文件上传重定向到另一个 REST 服务?

java - 在Processing/Java的链接列表中找到5个最大的值

java - 如何将 Maven 配置文件值注入(inject)属性文件

java - Maven Jenkins 构建失败

java - java 执行的 scala jar 文件 - cp 与 jar

java - 这是一种在 Java 中创建只读列表的方法吗?

embedded - open ("/dev/i2c-1",O_RDWR) 返回-1, i2c-1 设备无法打开

java - 在eclipse juno中安装maven插件

java - 我们可以在运行 Java -Jar 命令时选择任何随机类吗

java - Eclipse:有没有办法快速导出 JAR