Не могу запустить программу из нескольких классов из командной строки, используя пакеты - PullRequest
3 голосов
/ 21 мая 2011

Это мой первый пост - я обнаружил похожие проблемы, но ничего не касалось этой проблемы напрямую.Это звучит очень просто, но я не совсем уверен, почему это происходит.Моя программа прекрасно работает в 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 ]

4 голосов
/ 21 мая 2011

вам нужно

java simpletree.Program1Test

от dir выше simpletree

Также сделать необходимые классы доступными, используя -cp

2 голосов
/ 21 мая 2011
  1. Поместите ваши файлы .class в подпапку с именем "simpletree"
  2. Используйте эту командную строку:

    java simpletree.Program1Test

...