无法使用包从命令行运行多类程序

时间:2011-05-21 13:41:52

标签: java command-line runtime

这是我第一次发帖 - 我发现了类似的问题但没有直接涉及这个问题。这听起来很简单,但我不太清楚为什么会这样。我的程序在Eclipse中运行得很漂亮,但不是从命令行运行。我在 simpletree 包中有几个类。

这是 BinaryTree.java

    package simpletree;
    import java.io.*;

    public class BinaryTree implements Serializable {
       // Automatically generated UID
       private static final long serialVersionUID = -3124224583476129954L;

       BinaryTree leftNode; // left node
       BinaryTree rightNode; // right node  

       // some code
    }

    class Tree implements Serializable {
    private static final long serialVersionUID = 6591795896216994405L;
    private BinaryTree root;

    // some code    
    }

Program1Test.java

    package simpletree;

    public class Program1Test {
    public static void main(String[] args) {
        Tree tree = new Tree();
                // some code
    }
    }

以下是问题:从 simpletree 内部执行此操作可以很好地编译:

javac BinaryTree.java Program1Test.java

当我这样做时:

java Program1Test

我明白了:

Exception in thread "main" java.lang.NoClassDefFoundError: Program1Test (wrong n
ame: simpletree/Program1Test)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(Unknown Source)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$000(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)
Could not find the main class: Program1Test.  Program will exit.

有什么想法吗?我正确设置了类路径,并且我尝试使用包(simpletree.Program1Test)运行而没有。

2 个答案:

答案 0 :(得分:4)

你需要

java simpletree.Program1Test

来自simpletree以上的目录

还可以使用-cp

制作所需的课程

答案 1 :(得分:2)

  1. 将.class文件放在名为“simpletree”
  2. 的子文件夹中
  3. 使用此命令行:

    java simpletree.Program1Test