我在Maven中创建了一个作为完整jar的应用程序,该应用程序可以在大多数平台(Windows,Unix,某些Mac)上运行,但不能在Mac lion / 10.6上运行,并因错误而失败

java –jar jumbo-converters-crystal-cif-0.3-SNAPSHOT-jar-with-dependencies.jar 0151.cif 0151.cml
Exception in thread "main" java.lang.NoClassDefFoundError: ?jar
Caused by: java.lang.ClassNotFoundException: ?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:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)


更新:MANIFEST.MF包含:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: pm286
Build-Jdk: 1.6.0_24
Main-Class: org.xmlcml.cml.converters.cif.CIF2CMLConverter


解决方案:@Charlie是正确的。该错误发生在一个类中。大多数代表没有问题。 “罪魁祸首”是Powerpoint。我被要求以Powerpoint的身份提供我的资料(不是我的常规做法),并且该资料已“有效地”将HYPHEN-MINUS(U + 002D)转换为EN_DASH。大多数代表可以正常键入此内容,但是有些代表剪切并粘贴了损坏的命令。

最佳答案

问题是您用来执行的命令

java –jar jumbo-converters-crystal-cif-0.3-SNAPSHOT-jar-with-dependencies.jar 0151.cif 0151.cml


是错的...应该是:

java -jar jumbo-converters-crystal-cif-0.3-SNAPSHOT-jar-with-dependencies.jar 0151.cif 0151.cml


(可能不明显,但是第一个是jar之前的'EN DASH' (U+2013),第二个是hyphen。)

10-06 00:56