在CENTOS上启动Java应用程序会产生“无法找到或加载主类”

时间:2014-01-02 21:21:59

标签: java linux eclipse centos swt

我有64位安装CENTOS v6.5 final。

我有一个32位编译的Java应用程序,我在Eclipse中使用WindowBuilder / SWT Designer / SWT / Composite创建。

应用程序在Windows 7上完美运行,我在Windows 7中从Windows 7命令提示符创建了Java应用程序:

java -cp "bin/*;lib/*" PkgNetAccelerator32.netAcceleratorApp

lib文件夹中的是swt.jar,以及我自动创建的Manifest.jar文件。是的,我下载了swt.jar的Linux版本以便在CENTOS上使用,并将该文件放在/ lib文件夹中。我复制了/ bin和/ lib,并将这两个文件夹放在“/ home / jmr / Documents / NetAccelerator / Java”中。

当我尝试从我的CENTOS盒子上的终端窗口启动Java应用程序时,我收到以下错误的问题。提示是:

[jmr@sarah-linux Java]$ java -cp "bin/*;lib/*" PkgNetAccelerator32.netAcceleratorApp
Error: Could not find or load main class PkgNetAccelerator32.netAcceleratorApp

我没有在我的全局环境变量列表中定义CLASSPATH或JAVA_HOME,尽管我确实设置了-cp选项。如上所述,CENTOS盒子上的swt.jar是Linux版本。

以下是来自Java的版本信息:

[jmr@sarah-linux Java]$ java -version
java version "1.7.0_45"
OpenJDK Runtime Environment (rhel-2.4.3.4.el6_5-x86_64 u45-b15)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)

文件夹布局很好。

[jmr@sarah-linux Java]$ ls -l bin
total 8
drwx------. 3 jmr jmr 4096 Dec 30 12:43 org
drwx------. 2 jmr jmr 4096 Dec 30 12:56 PkgNetAccelerator32
[jmr@sarah-linux Java]$ ls -l lib
total 1828
drwx------. 2 jmr jmr    4096 Dec 31 13:18 Linux
-rwxr-xr-x. 1 jmr jmr    7994 Dec 30 14:08 Manifest.jar
-rwxr-xr-x. 1 jmr jmr  124252 Dec 26 13:06 resty-0.3.2.jar
-rwxr-xr-x. 1 jmr jmr 1727233 Dec 31 13:18 swt.jar
drwx------. 2 jmr jmr    4096 Dec 31 13:18 Windows
[jmr@sarah-linux Java]$ ls bin/PkgNetAccelerator32/
netAcceleratorApp$1.class  netAcceleratorApp.class

我对如何解决问题感到茫然。

无论价值多少,我都尝试了以下内容,但是出现了以下错误:

[jmr@sarah-linux Java]$ java -cp "bin/[An/*;lib/*" -jar lib/Manifest.jar PkgNetAccelerator32.netAcceleratorApp
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
    at java.lang.Class.getMethod0(Class.java:2774)
    at java.lang.Class.getMethod(Class.java:1663)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Composite
    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)
    ... 6 more

思想?

1 个答案:

答案 0 :(得分:4)

在Linux / Unix系统上,Java程序的is :(冒号)而不是;(分号)的类路径分隔符。将Java调用更改为:

java -cp "bin/*:lib/*" PkgNetAccelerator32.netAcceleratorApp