我想包一个非常简单的应用程序到广口瓶中,分发到用户。 我使用Eclipse靛蓝兼容Mac OS X 10.6.8的M2E插件。
我使用的Maven构建:包的目标将它打包作为一个罐子。 如果我双击罐子打开它,在GUI打开,似乎是工作,但是当我点击执行按钮,没有任何反应。 (该程序工作正常,如果我做的运行方式......在Eclipse)。
如果我尝试运行命令行的罐子,它甚至不会打开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清单文件,检查类路径,它看起来是这样的:
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
我对这里发生的一切几个问题:
为什么GUI打开时,我双击jar文件,而不是当我尝试在命令行中运行呢?
我猜classpath中需要定义到我使用的外部罐的绝对路径,我该如何设置,在POM文件?
谢谢!