【发布时间】:2011-12-15 07:07:35
【问题描述】:
所以我很确定在问这个问题之前我看起来已经尽力了,所以就这样吧。 我正在编写一个用于 RC4 加密的 Java 类,我想使用 Google Guava 中的 Files 类。我在 Ubuntu 命令行上使用 javac 进行编译。我正在尝试将 jar 文件 guava-10.0.1.jar" 链接到我的班级但没有成功。
这是一个从顶部开始的sn-p:
import java.util.*;
import java.io.*;
import com.google.common.io.*;
class rc4 {
private static int S[] = new int[256];
private static int kLen;
public static void main(String[] args) {
...
我正在调用的特定行如下,完全在一个 try 块中:
byte plain[] = Files.toByteArray(file);
然后我用这个编译:
$ javac -cp FULL/FILE/PATH/guava-10.0.1.jar rc4.java
它可以编译,但是当我尝试使用我定义的选项运行 java rc4 以访问该函数时,我收到错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/io/Files
at rc4.main(rc4.java:58)
Caused by: java.lang.ClassNotFoundException: com.google.common.io.Files
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 1 more
我尝试了几个不同的调用,并检查了 jar 以确保它不是 jar、在 jar 中、在 jar 中等。然后我尝试使用清单文件:
Manifest-Version: 1.0
Created-By: me
Main-Class: rc4
Class-path: /FULL/FILE/PATH/guava-10.0.1.jar
然后像这样创建一个jar:
jar cvf0m rc4.jar manifest.txt rc4.class
然后运行它:
java -jar rc4.jar
我得到与上面相同的错误,但它说“rc4”无法找到。 所以,我有点迷失了我所缺少的东西。我对 Java 还很陌生,所以如果我遗漏了一些明显的基本必需品,我真诚地为疏忽道歉,但如果有人能在这方面给我一些帮助,我将不胜感激。
【问题讨论】:
标签: java error-handling jar manifest javac