在CENTOS上启动Java应用程序产生“无法找到或加载主类” [英] Launching Java application on CENTOS yields "Could not find or load main class"
问题描述
我有64位安装的CENTOS v6.5 final。
我有一个32位编译的Java应用程序,我使用WindowBuilder / SWT Designer / SWT / Composite在Eclipse中。
应用程序在Windows 7上完美运行,从Windows 7命令提示符下创建Java应用程序:
java -cpbin / *; lib / *PkgNetAccelerator32.netAcceleratorApp
lib文件夹里面是swt.jar,以及我自动创建的Manifest.jar文件。是的,我下载了Linux版本的swt.jar用于CENTOS,并将该文件放在/ lib文件夹中。我复制了/ bin和/ lib并将这两个文件夹放在/ home / jmr / Documents / NetAccelerator / Java。
我收到以下错误,当我尝试从我的CENTOS框上的终端窗口启动Java应用程序。提示符为:
[jmr @ sarah-linux Java] $ java -cpbin / *; lib / *PkgNetAccelerator32 .netAcceleratorApp
错误:找不到或加载主类PkgNetAccelerator32.netAcceleratorApp
在我的全局环境变量列表中定义了CLASSPATH或JAVA_HOME,虽然我有-cp选项设置。如上所述,CENTOS框上的swt.jar是Linux版本。
这里是来自Java的版本信息:
[jmr @ sarah-linux Java] $ java -version
java版本1.7.0_45
OpenJDK Runtime Environment(rhel-2.4.3.4。 el6_5-x86_64 u45-b15)
OpenJDK 64位服务器虚拟机(构建24.45-b08,混合模式)
文件夹布局很好。
[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
线程main中的异常java.lang.NoClassDefFoundError:org / eclipse / swt / widgets / Composite
在java.lang.Class.getDeclaredMethods0(本地方法)
在java.lang.Class.privateGetDeclaredMethods(Class.java:2531)
在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)
导致:java.lang.ClassNotFoundException:org.eclipse.swt.widgets.Composite
at java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)
在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)
在java.security.AccessController.doPrivileged(本地方法)
在java.net.URLClassLoader.findClass(URLClassLoader。 java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)
在java .lang.ClassLoader.loadClass(ClassLoader.java:358)
... 6 more
想法?
解决方案在Linux / Unix系统上,Java程序的类路径分隔符是
:
(冒号)而不是;
(分号)。将您的Java调用更改为:
java -cpbin / *:lib / *PkgNetAccelerator32.netAcceleratorApp
I have 64-bit installation of CENTOS v6.5 final.
I have a 32-bit compiled Java application, which I created with WindowBuilder/SWT Designer/SWT/Composite inside Eclipse.
The application runs perfectly on Windows 7, where I created the Java application, from a Windows 7 command prompt:
java -cp "bin/*;lib/*" PkgNetAccelerator32.netAcceleratorApp
Inside the lib folder is swt.jar, and the Manifest.jar file that I automatically created. Yes, I downloaded the Linux version of swt.jar for use on CENTOS and placed that file in the /lib folder. I copied over the /bin and /lib and placed both folders at "/home/jmr/Documents/NetAccelerator/Java".
The problem that I receive the following error, when I try and start the Java application from a terminal window on my CENTOS box. The prompt is:
[jmr@sarah-linux Java]$ java -cp "bin/*;lib/*" PkgNetAccelerator32.netAcceleratorApp Error: Could not find or load main class PkgNetAccelerator32.netAcceleratorApp
I do not have CLASSPATH or JAVA_HOME defined in my global environment variables list, although I do have the -cp option set. As stated above, swt.jar on the CENTOS box is the Linux version.
Here is the version information from 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)
The folder layout is fine.
[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
I am at a loss for how to fix the problem.
For whatever it is worth, I tried the following, but that gave the following error:
[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
Thoughts?
解决方案On the Linux/Unix systems a classpath separator for Java programs is
:
(colon) instead of;
(semicolon). Change your Java call to:
java -cp "bin/*:lib/*" PkgNetAccelerator32.netAcceleratorApp
这篇关于在CENTOS上启动Java应用程序产生“无法找到或加载主类”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!