0

我有这个使用 jline 库的示例类:

[niko@localhost temporal]$ ls -l jline/example/Example.java
-rw-rw-r-- 1 niko niko 3502 Jul  6 00:20 jline/example/Example.java
[niko@localhost temporal]$ head -20 jline/example/Example.java
package jline.example;

import jline.*;

import java.io.*;
import java.util.*;
import java.util.zip.*;

public class Example {
    public static void usage() {
        System.out.println("Usage: java " + Example.class.getName()
                + " [none/simple/files/dictionary [trigger mask]]");
        System.out.println("  none - no completors");
        System.out.println("  simple - a simple completor that comples "
[niko@localhost temporal]$ 

当我运行它时,我收到此错误:

[niko@localhost temporal]$ java -classpath ./:jline/example/:./jline-0.9.94.jar Example
Exception in thread "main" java.lang.NoClassDefFoundError: Example (wrong name:     jline/example/Example)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    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:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
[niko@localhost temporal]$ 

这里有什么问题?

4

1 回答 1

0

您需要java使用完全限定的类名进行调用,在您的情况下是jline.example.Example. 此外,您的类路径应该只是到包层次结构的根目录,从外观上看,它是当前的工作目录。

java -classpath .:jline-0.9.94.jar jline.example.Example

这只是普通的 Java - 我建议您在进入第三方库等之前学习编译和运行 Java 程序的基础知识。

于 2013-07-06T12:04:07.457 回答