即使jar文件在工作目录中也找不到类

Mic*_*ler 4 java aix classpath

我正在努力让我的Java程序在AIX上运行.我在Windows上使用Eclipse创建了一个可运行的Jar文件,jRams.jar如下所示.我继续得到一个类未找到错误,直到最后我把所有外部库放在同一目录中.

$ ls
JAXB2_20081030.jar
JAXB2_20110601.jar
activation.jar
asjava.jar
commons-beanutils-1.8.3.jar
commons-beanutils-bean-collections-1.8.3.jar
commons-beanutils-core-1.8.3.jar
commons-codec-1.5.jar
commons-collections-3.2.1.jar
commons-configuration-1.6.jar
commons-digester-2.1.jar
commons-jxpath-1.3.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
commons-logging-adapters-1.1.1.jar
commons-logging-api-1.1.1.jar
jRams.jar
jaxb-api.jar
jaxb-impl.jar
jaxb-xjc.jar
jaxb1-impl.jar
jremote.jar
jsr173_1.0_api.jar
log4j-1.2.16.jar
netty-3.2.4.Final.jar
$
Run Code Online (Sandbox Code Playgroud)

不过,我得到了类找不到错误.

$ java -jar jRams.jar
The java class is not found:  com.jbase.jremote.JRemoteException
Run Code Online (Sandbox Code Playgroud)

jremote.jar肯定包含JRemoteException.为什么这不起作用?

UPDATE

感谢您的直截了当的答案.我现在更了解java应用程序和清单文件的本质.

事实证明我的ftp客户端是以ASCII模式而不是Binary传输的,因此jar文件已损坏.尽管如此,我学到了很多东西.

aio*_*obe 7

使用该-jar选项时,您需要指定清单文件中类路径上应该包含哪些jar 文件.只需在同一目录中拥有所需的jar文件就不会这样做.

在清单中添加一行说:

Class-Path: JAXB2_20081030.jar:JAXB2_20110601.jar:....:netty-3.2.4.Final.jar
Run Code Online (Sandbox Code Playgroud)

或跳过该-jar选项并使用启动

java -cp JAXB2_20081030.jar:....:netty-3.2.4.Final.jar:jRams.jar pkg.JRamsMain
Run Code Online (Sandbox Code Playgroud)

它应该工作正常.

(请注意,在*nix系统上,与Windows机器相反,类路径中的jar文件应使用:而不是分隔;.)

进一步阅读: