2012-07-25 72 views
3

我有一个程序,我已经写了,变成了一个jar文件。 jar文件在我的电脑上工作得很好。当我尝试运行服务器上的程序时,它将运行,jar文件不起作用。我得到这个错误。程序工作在我的电脑,而不是服务器

Exception in thread "main" java.lang.NoClassDefFoundError: Publish 
Caused by: java.lang.ClassNotFoundException: Publish 
     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) 
Could not find the main class: Publish. Program will exit. 

我觉得这个问题是由不同版本的Java和不同的环境或东西造成的。我认为这些库不是这里的问题,但是这个程序正在运行的环境。 jar文件在我自己的计算机上完美工作。

我的Java版本 Java版本 “1.6.0_22” 的Java(TM)SE运行时环境(建立1.6.0_22-B04) 的HotSpot的Java(TM)客户端虚拟机(建设17.1 - B03,混合模式,共享)

服务器Java版本 Java版本 “1.6.0_24” 的Java(TM)SE运行时环境(建立1.6.0_24-B07) 爪哇热点(TM)64位服务器VM(构建19.1-B02,混合模式)

我也收到此错误,这表明我可能有一个32位Java在服务器具有64位,这可能会导致问题。 VM 的初始化过程中出现

误差对象堆

我解决这个错误得到了很容易被刚刚分配更多的内存来运行此程序无法保留足够的空间。

有谁有关于如何解决这个问题的任何想法?

注:我也看了清单文件,它似乎罚款

回答

2

您正在使用Publish不带包。这意味着java期望这个类在默认包中。

您需要使用完全合格的名称,例如:foo.bar.Publish

documentation

默认情况下,第一个非选项参数是要调用的类 的名称。应使用完全合格的类名称。如果指定了-jar 选项时,所述第一非选项argume NT是含有类和资源˚F尔斯的应用, 与由主类清单报头中指示的启动类一个 JAR归档的名称。

1

您需要包括完整的包名。这个错误不是32/64位操作系统的错误,也不是Java环境的错误。

相关问题