Объявить внешние библиотеки в Java - Ошибка компиляции - PullRequest
0 голосов
/ 13 марта 2012

Я не могу скомпилировать мой Program.java из командной строки (только в Eclipse).Когда я хочу скомпилировать его с

javac Program.java

, в классах JUnit возникают ошибки «не удается найти символ».

В Eclipse есть JUnit classes в его плагинах, но для компиляции на моемМне нужно как-то скомпилировать JUnit.jar с программой.Как я могу это сделать?Кажется, он не работает с

javac -cp absolutePathTo\JUnitJar Program.java

Или эта проблема может быть вызвана тем, что JUnit classes не реализованы в моих (вложенных) новых Thread классах?

    C:\Documents and Settings\xxxx\Desktop\eclipse\xxxx\Program\src\da
    ta>javac -cp junit-4.10.jar Testworks.java
    Program.java:81: package org.junit.runner does not exist
    import org.junit.runner.Description;
                           ^
    Program.java:82: package org.junit.runner does not exist
    import org.junit.runner.JUnitCore;
                           ^
    Program.java:83: package org.junit.runner does not exist
    import org.junit.runner.Request;
                           ^
    Program.java:84: package org.junit.runner does not exist
    import org.junit.runner.Result;
                           ^
    Program.java:85: package org.junit.runner.notification does not exist
    import org.junit.runner.notification.Failure;
                                        ^
    Program.java:86: package org.junit.runner.notification does not exist
    import org.junit.runner.notification.RunListener;
                                        ^
    Program.java:253: cannot find symbol
    symbol  : class JUnitCore
    location: class data.Program
            JUnitCore jCore; //-> Core Runner - has no pleaseStop()
            ^
    Program.java:254: cannot find symbol
    symbol  : class RunListener
    location: class data.Program
            RunListener jRl;
            ^
    Program.java:255: cannot find symbol
    symbol  : class Request
    location: class data.Program
            Request jRq;
            ^
   Program.java:2167: cannot find symbol
    symbol  : class RunListener
    location: class data.Program
            class RlOne extends RunListener{
                                ^
    Program.java:2170: cannot find symbol
    symbol  : class Description
    location: class data.Program.RlOne
                            public void testRunStarted(Description descRun)
                                                       ^
    Program.java:2179: cannot find symbol
    symbol  : class Description
    location: class data.Program.RlOne
                            public void testStarted(Description descStart)
                                                    ^
    Program.java:2185: cannot find symbol
    symbol  : class Description
    location: class data.Program.RlOne
                            public void testFinished(Description descFinish)
                                                     ^
    Program.java:2202: cannot find symbol
    symbol  : class Failure
    location: class data.Program.RlOne
                            public void testFailure(Failure failure)
                                                    ^
    Program.java:2211: cannot find symbol
    symbol  : class Description
    location: class data.Program.RlOne
                            public void testIgnored(Description descIgno)
                                                    ^
    Program.java:2221: cannot find symbol
    symbol  : class Result
    location: class data.Program.RlOne
                            public void testRunFinished(Result result)
                                                        ^
    Program.java:2422: cannot find symbol
    symbol  : variable Request
    location: class data.Program.ThirdThread
                                    jRq = Request.aClass(cRun);
                                          ^
    Program.java:2426: cannot find symbol
    symbol  : variable Request
    location: class data.Program.ThirdThread
                                    jRq = Request.method(cRun, comb_meth.getSelected
    Item().toString());
                                          ^
    Program.java:2584: cannot find symbol
    symbol  : class JUnitCore
    location: class data.Program
                            jCore = new JUnitCore();
                                        ^
    19 errors

Вывод команды java, когда я хочу запустить ее скомпилированным Eclipse Program.class:

C:\Documents and Settings\xxxx\Desktop\eclipse\xxxx\Program\bin\da
ta>java Program
Exception in thread "main" java.lang.NoClassDefFoundError: Program
Caused by: java.lang.ClassNotFoundException: Program
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Program.  Program will exit.

Ответы [ 3 ]

1 голос
/ 13 марта 2012

При использовании команды javac с внешним jar, вы должны использовать

javac -classpath path-to-external-jar/jarname1.jar;/path-to-external-jar2/jarname2.jar Program.java

то же самое для команды java:

java -classpath path-to-external-jar/jarname1.jar;/path-to-external-jar2/jarname2.jar Program

0 голосов
/ 13 марта 2012

Теперь я получил его на работу.

Я переименовал junit-4.10.jar в junit.jar, переместил его в другую папку и каким-то образом это решило проблему:

javac -classpath "C:\Documents and Settings\x\Desktop\eclipse\x\Program\extres\junit.jar" src\data\Program.java

Кстати:

Когда я в C:\Documents and Settings\x\Desktop\eclipse\x\Program\, он также работает с:

javac -classpath extres\junit.jar src\data\Program.java
0 голосов
/ 13 марта 2012

Вам действительно нужно больше узнать о теме Java CLASSPATH. Ваши ошибки, как при компиляции, так и во время выполнения, связаны с тем, что вы не указали полный путь к классу.

...