[英]Cannot find class even when jar file is in working directory
我正在努力让我的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。 为什么这不起作用?
UPDATE
感谢您的直截了当的答案。 我现在更了解java应用程序和清单文件的本质。
事实证明我的ftp客户端是以ASCII模式而不是Binary传输的,因此jar文件已损坏。 尽管如此,我学到了很多东西。
使用-jar
选项时,需要指定清单文件中类路径上应该包含哪些jar 文件 。 只需在同一目录中拥有所需的jar文件就不会这样做。
在清单中添加一行说:
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文件应使用:
而不是;
来分隔。)
进一步阅读:
您需要通过添加-classpath
参数将所有这些JAR添加到运行时CLASSPATH
。 AIX要求您使用:
分隔JAR :
您必须指定完整路径(如果库与jRams
不在同一目录中)或仅指定清单文件中jar文件的名称(如果所有依赖项jar都在同一文件夹中)。 Alternative使用-cp
参数指定所有从属jar的路径。
示例 ( 假设每个依赖项都在您执行java命令的同一目录中 ):
java -cp commons-collections-3.2.1.jar; jaxb-impl.jar; etc.. ;jRams.jar package_to_class.MyMainClass.java
其中package_to_class
是示例: com.myproj.example
。
已编辑 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.