JavaCompiler возвращает ноль - PullRequest
0 голосов
/ 23 февраля 2012

Я создаю программу по аналогии с Codingbat.com.

Во время выполнения он должен скомпилировать код и затем выполнить его. Это все было обработано. В настоящее время я вынужден использовать JavacTool, который требует, чтобы он был упакован вместе.

У меня есть 2 основных вопроса:

1) Как я могу остановить ToolProvider.getSystemJavaCompiler () от возврата null при запуске из исполняемого файла jar?

2) Если вышесказанное невозможно, можно ли добавить банку com.sun.tools.javac.api.JavacTool; не имея библиотеки ссылок, чтобы она работала как обычный импорт?

Спасибо за ответ, если хотите, я мог бы загрузить Jar с указанной библиотекой и Jar без него.

Для ясности, тот, на который ссылается библиотека, работает, но он намного больше и медленнее, чем jar, запускаемый через eclipse, который использует JavaCompiler, а не JavacTool

Спасибо

Edit:

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

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

I подозреваю это просто проблема того, какую версию Java вы используете.Если вы запустите версию, которая поставляется с JRE, у нее не будет доступных инструментов.Если вы запустите версию, поставляемую с JDK, она будет.

В качестве примера приведу короткую, но полную программу:

import javax.tools.*;

public class Test
{
    public static void main(String[] args)
    {
        System.out.println(ToolProvider.getSystemJavaCompiler());
    }
}

Запуск ее с версией JRE java.exe.на моем ноутбуке:

c:\Users\Jon\Test>"\Program Files\java\jre7"\bin\java Test
null

А теперь с JDK:

c:\Users\Jon\Test>"\Program Files\Java\jdk1.7.0"\bin\java Test
com.sun.tools.javac.api.JavacTool@441944ae

Так что попробуйте явно указать двоичный файл Java, связанный с JDK.

0 голосов
/ 23 февраля 2012

Итак, вы уже знаете, что у всех ваших пользователей будет установлен JDK, и вы знаете, как найти путь к классу JDK, когда вы находитесь в своей Java-программе.Вам не нужно загружать DLL.Вам нужно загрузить класс com.sun.tools.javac.api.JavacTool в tools.jar.См. Как загрузить файл JAR во время выполнения , как загрузить tools.jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...