java - 在 CENTOS 上启动 Java 应用程序会产生 "Could not find or load main class"

标签 java linux eclipse centos swt

我安装了 64 位 CENTOS v6.5 Final。

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

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

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

lib 文件夹内是 swt.jar 和我自动创建的 Manifest.jar 文件。是的,我下载了在 CENTOS 上使用的 Linux 版本的 swt.jar 并将该文件放在/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

尽管我设置了 -cp 选项,但我的全局环境变量列表中没有定义 CLASSPATH 或 JAVA_HOME。如上所述,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

我不知道如何解决这个问题。

无论它的值(value)如何,我尝试了以下操作,但这给出了以下错误:

[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

想法?

最佳答案

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

java -cp“bin/*:lib/*” PkgNetAccelerator32.netAcceleratorApp

关于java - 在 CENTOS 上启动 Java 应用程序会产生 "Could not find or load main class",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892135/

相关文章:

linux - vim:如何在 vim 可视模式下复制一个单词,但在可视 block 模式下粘贴它?

linux - 备用 SQlite 备份解决方案

eclipse - 尽管存在依赖关系,PrimeFaces 组件不会在浏览器中呈现

java - 渲染时刷新表

java - 使用Guava实现缓存

java - 如何从字符串中删除空格?仅使用 indexOf() 和 substring()

linux - 如果它们出现在连续行中,则删除具有相似关键字的行

java - 当应用程序运行时,使用 Apache Mahout 的 TFIDF 有 "Job failed!"

java - 在 Eclipse 插件中为 Java 项目添加弹出操作

java - 使用json数据在表单中一起输入多个数据