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

标签 java classpath aix

我正在努力让我的 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
$

我仍然收到找不到类的错误。

$ java -jar jRams.jar
The java class is not found:  com.jbase.jremote.JRemoteException

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

更新

感谢您中肯的回答。我现在更好地理解了 Java 应用程序和 list 文件的本质。

原来我的 ftp 客户端是以 ASCII 模式而不是二进制模式传输的,所以 jar 文件已损坏。尽管如此,我还是学到了很多东西。

最佳答案

当使用-jar 选项时,您需要在manifest file 中指定哪些jar 文件应该在您的类路径中。 .仅仅将所需的 jar 文件放在同一目录中是不行的。

在您的 list 中添加一行:

Class-Path: JAXB2_20081030.jar:JAXB2_20110601.jar:....:netty-3.2.4.Final.jar

或者跳过-jar选项并使用

启动
java -cp JAXB2_20081030.jar:....:netty-3.2.4.Final.jar:jRams.jar pkg.JRamsMain

它应该可以正常工作。

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

进一步阅读:

关于java - 即使 jar 文件在工作目录中也找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7469711/

相关文章:

java - 如何在不使用比较器的情况下对充满空值的数组进行排序?

java - 使用循环将 int 转换为 string,然后再转换回 int

java - 如何在 Java 中进行复杂的负面回顾以拆分 token ?

java - 什么是类路径以及如何设置它?

regex - Perl 程序可有效处理目录中的 500,000 个小文件

java - 如何将 Java 项目转换为 Maven 项目

java - Struts2中如何获取Springs ApplicationContext?

Randoop 的 Java 类路径问题

c - perfstat_process 未在 AIX 6.1 上的 libperfstat.h 中声明

linux - Bin 数据在 AIX 和 Linux 中的读取方式不同