Подтвердить что ты не робот

ToolProvider.getSystemJavaCompiler() возвращает null - можно использовать только с установленной JRE?

Я пытаюсь использовать класс JavaCompiler:

Когда я вызываю ToolProvider.getSystemJavaCompiler(), он возвращает null.

Я думаю, что это потому, что я использую JRE вместо JDK.

Проблема в том, что я хочу, чтобы она запускалась на всех платформах, независимо от погоды, которую пользователь использует JRE или JDK.

Если кто знает, как это исправить, или альтернативный метод использования, пожалуйста, прокомментируйте.

Любая помощь будет оценена.

4b9b3361

Ответ 1

ToolProvider.getSystemJavaCompiler() недоступен.

Отсутствует ли tools.jar в пути к классам?

Set class path to the tools.jar, который можно найти в каталоге jdk\jre.

System.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.7.0_02");

Ответ 3

Вот как запустить компилятор Java из вашего приложения, когда JDK не установлен.

Сначала включите файл tools.jar из JDK с вашим Java-приложением и поместите tools.jar в свой путь к классам. Oracle, вероятно, не понравится, что вы это делаете. Но есть законная работа. Вы получаете файл tools.jar из бесплатных JDK, предлагаемых openjdk.org(openjdk), RedHat (IcedTea) или Azul Systems (Zulu).

Затем, вместо использования ToolProvider.getSystemJavaCompiler() и класса JavaCompiler, вызовите компилятор, расположенный непосредственно в tools.jar. Ниже приведен фрагмент кода:

String classpath = ...; // make sure tools.jar is in this path 
String sourcepath = ...; // path to your sources
String putputpath = ...; // directory for generated class files
String filepath = ...; // file path the file you want to compile

String[] args = new String[] {
"-classpath", classpath,
"-sourcepath", sourcepath,
"-d", putputpath,
filePath
};
com.sun.tools.javac.Main javac = new com.sun.tools.javac.Main();
int compileStatus = javac.compile(args);

Ответ 4

Другое решение: - http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7181951

Скопируйте tools.jar в JDK_HOME/lib/в JRE_HOME/lib/. По крайней мере, для меня это решило мою магию!

(я ничего не рекомендовал, как указано выше. Я просто скопировал его там.)

Ответ 5

Просто скопируйте файл tools.jar из /lib в Он работает

Вы можете получить System.out.println(System.getProperty( "java.home" ))

В большинстве случаев это похоже на C:\Program files\Java\jre (версия) [для окон]

Ответ 6

вот простое решение, которое сработало для меня

Я просто изменил библиотеку jre System на..... Program Files\Java\jdk1.7.0_55\jre вместо.... Program Files\Java\jdk1.7.0_55\bin, и это сработало для меня.