Используйте JDK6 для динамической компиляции src, но после переключения в среду JDK все равно получите нуль от ToolProvider.getSystemJavaCompiler (); - PullRequest
0 голосов
/ 06 мая 2011

Я использую JDK6 для компиляции входного src из пользовательского интерфейса и запуска немедленно.

Но проблема в том, что по умолчанию мое приложение использует jre, а не jdk, поэтому:

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

всегда возвращает ноль;

И я заметил, что на каждом сервере также установлен JDK6, поэтому я пишу это, чтобы ожидать решения этой проблемы:

System.setProperty("java.home", "\opt\jdk-i386-60");
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
// Dynamic compile and run app

Но это не сработало, возможно, среда Java не изменится на то место, которое я только что установил немедленно, оно все равно получило нулевой объект.

Итак, мой вопрос: как вы переключаете свою среду jre на jdk и сразу получаете эффект, что мы можем получить объект JavaCompiler?

Спасибо.

1 Ответ

1 голос
/ 06 мая 2011

Не пытайтесь установить java.home! Установка его с помощью переключателя командной строки обычно приводит к большим проблемам (библиотеки не найдены, ...). Установка его с помощью setProperty() обычно не влияет.

Вместо этого, если вы хотите выполнить свое приложение с определенной установкой Java, просто используйте его исполняемый файл java для запуска приложения:

/opt/jdk-i386-60/bin/java -jar myApp.jar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...