在不同的目录中使用类文件

时间:2014-05-13 09:22:28

标签: java

我正在尝试运行一个使用位于单独子文件夹中的类的简单类。它编译正常,但是,在运行时会发生异常。

lol.java:

public class lol
{
    public static void main(String Args[])
    {
        test();
    }

    public static Input test()
    {
        Input asdf = new Input();
        return asdf;
    }
}

Input.java:

public class Input
{
    public int x;
}

我使用命令编译:

javac lol.java HOME/input.java

编译后的文件夹结构:

Test
 |
 |---lol.java
 |---lol.class
 |---HOME
      |
      |---Input.java
      |---Input.class

编译没有错误;但是,我不确定以后如何运行它。

我尝试用以下方式运行它:

java lol

但现在无法找到“输入”类,因为它位于单独的文件夹中,因此导致以下异常:

java.lang.NoClassDefFoundError: Input
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: Input
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 6 more
Exception in thread "main"

如何在保持此文件夹结构的同时运行它?

1 个答案:

答案 0 :(得分:3)

您必须将HOME添加到类路径中:

在Windows上:

java -classpath .;HOME lol

其他一切:

java -classpath .:HOME lol