2011-05-21 47 views
3

这是我第一次发布 - 我发现类似的问题,但没有直接涉及此问题。这听起来很简单,但我不太清楚为什么会发生这种情况。我的程序在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)和没有。

回答

4

你从上面的目录simpletree

还需要

java simpletree.Program1Test 

使提供所需的类使用-cp

+0

不要我觉得自己聪明?感谢您及时的回复! – 2011-05-21 13:46:08

+0

我已将其标记为已接受。再次感谢。 – 2011-05-21 19:21:36

2
  1. 将您的.class文件中一个名为 “simpletree”
  2. 子文件夹

    使用此命令行:

    java simpletree.Program1Test

+0

这是另一个很好的解决方案,但是我的类已经在simpletree中(和.java文件一起),我需要在包之外运行程序。 – 2011-05-21 19:23:47