Код работает в командной строке, но не в eclipse (компиляция класса из строки...)JAVA

Программисты JAVA общаются здесь
Anonymous
Код работает в командной строке, но не в eclipse (компиляция класса из строки...)

Сообщение Anonymous »

Итак, у меня есть код, который компилирует класс из строки и затем запускает его. Он отлично работает из командной строки, но не в eclipse...

Код: Выделить всё

import java.lang.reflect.Method;
import java.util.Arrays;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaCompiler.CompilationTask;
import javax.tools.JavaFileObject;
import javax.tools.ToolProvider;

public class Another2 {

public static void main(String args[]) throws Exception {
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector diagnostics = new DiagnosticCollector();
String temp = "public class ByeWorld {\n" + "  public static void main(String args[]) {"
+ " System.out.println(\"First of our Compiled Class\");}}";
JavaFileObject file = new JavaSourceFromString("ByeWorld", temp);
Iterable myclass = classLoader.loadClass("ByeWorld");
Method mymethod = myclass.getDeclaredMethod("main", new Class[] { String[].class });
mymethod.invoke(null, new Object[] { null });
}
}
В командной строке получаю:

Код: Выделить всё

$ javac Another2.java
$ java Another2
First of our Compiled Class
Но в затмении я получаю:

Код: Выделить всё

Exception in thread "main" java.lang.ClassNotFoundException: ByeWorld
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)
at Another2.main(Another2.java:21)
Происходит ли что-то с разрешения? это постоянно? И каков мой подход к исправлению?

Подробнее здесь: https://stackoverflow.com/questions/859 ... m-a-string

Вернуться в «JAVA»