Я создаю приложение swing, которое будет распространено с помощью Java-веб-страницы. Это своего рода редактор java, где пользователи моего приложения смогут скомпилировать исходный код Java.Проблема при компиляции java-кода с использованием API-интерфейса компилятора
Этот вопрос -
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
Он отлично работает в Dev окр. Но когда я развертываю свое приложение с помощью webstart, то на стороне клиента он возвращает null. Это связано с тем, что мое приложение работает на JRE вместо JDK. [System.getProperty («java.home») указывает на JRE]
Чтобы преодолеть эту проблему, я последовал предложению, упомянутому в следующем потоке SO.
Я указывая java.home свойство каталог установки JDK в.
System.setProperty("java.home","C:\\DevEnv\\java");
Теперь ToolProvider.getSystemJavaCompiler();
возвращает действительный объект компилятор, но я получаю следующее исключение при компиляции кода Java с ним. Это на самом деле при вызове метода getStandardFileManager объекта компилятора.
Код
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
System.out.println("Compiler - " + compiler);
if(compiler!=null){
MyDiagnosticListener c = new MyDiagnosticListener(logWindow);
StandardJavaFileManager fileManager = compiler.getStandardFileManager(c, Locale.ENGLISH, null);
Iterable<String> options = Arrays.asList("-d", CLASS_OUTPUT_DIR);
JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
c, options, null, files);
Boolean result = task.call();
}
Исключение -
Пожалуйста, помогите мне решить эту проблему.
ADD JNLP
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://<dynamic-ip>:8080/" href="ProjT.jnlp">
<information>
<title>Tectra</title>
<vendor>Manas Kumar Mukherjee</vendor>
<homepage href="http://<dynamic-ip>:8080/" />
<description>Testing Testing</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.6+" />
<jar href="Tools.jar" />
...
<jar href="log4j-1.2.16.jar" />
</resources>
<application-desc main-class="com.ui.DevMain" />
</jnlp>
Благодаря
Вы правильно подписали свой апплет? В противном случае на клиентской машине будут только очень ограниченные разрешения! –
да я. Приложение swing работает правильно. В JNLP-файле я установил все «все разрешения» в атрибуте безопасности. Процесс компиляции работает отлично в моем dev env (используя eclipse). Спасибо –
1) Обязательно проверьте JNLP с помощью [JaNeLA] (http://pscode.org/janela/). 2) * «Я указываю свойство java.home в каталог установки JDK». * Как это должно работать для ваших пользователей? Вы ожидаете, что сами измените свойства? 3) Пожалуйста, не публикуйте скриншоты текстовой информации. Скопируйте/вставьте ** текст **. Мало того, что другие байты для других загружаются/видны, но доступны для поиска. –