Как можно устранить указанную ниже ошибку?

Я разрабатываю мобильную IDE для Processing, и меня интересует использование библиотеки NB-Javac в качестве компилятора для Java-кода. Однако при запуске возникает ошибка: 

> error: Failed resolution of: Lcom/sun/tools/javac/file/JavacFileManager; 

Код можно найти по следующей ссылке: <a href="https://github.com/XedoxDev/P-AIDE/tree/master/PA...">https://github.com/XedoxDev/P-AIDE/tree/master/PA...</a>. 

Если кто-то имеет опыт в решении подобных проблем, буду признателен за помощь. Также могу обсудить детали в Telegram: <a href="https://t.me/XedoxSL" rel="nofollow">https://t.me/XedoxSL</a>.
  • 6 декабря 2024 г. 12:43
Ответы на вопрос 2
Ошибка, с которой вы сталкиваетесь (`Failed resolution of: Lcom/sun/tools/javac/file/JavacFileManager;`), указывает на то, что ваша среда выполнения не может найти класс `JavacFileManager`, который является частью JDK. В частности, проблема возникает из-за отсутствия необходимых библиотек, когда вы пытаетесь использовать библиотеку `NB-Javac`.

Вот несколько шагов, которые могут помочь устранить эту ошибку:

1. **Проверьте зависимости**:
   Убедитесь, что вы включили все необходимые JAR-файлы, которые могут содержать классы JDK, такие как `tools.jar`. Обычно этот файл находится в каталоге `lib` вашего JDK. Например, на Windows это может быть `C:\Program Files\Java\jdk<версия>\lib\tools.jar`.

2. **Адаптация под Android**:
   Обратите внимание, что библиотеки, использующие классы из `com.sun.tools`, могут не работать на Android, так как Android SDK не включает эти классы. В этом случае рекомендуется рассмотреть альтернативные подходы, такие как:
   - Использовать другие компиляторы, совместимые с Android, такие как [Eclipse JDT](https://www.eclipse.org/jdt/) или [Java Compiler API](https://docs.oracle.com/javase/8/docs/api/javax/tools/JavaCompiler.html).
   - Использовать существующие библиотеки для выполнения Java-кода на Android, такие как [JavaScript engines](https://developer.android.com/reference/jdk/nashorn) или другие компиляторы/интерпретаторы.

3. **Проверьте версию JDK**:
   Убедитесь, что вы используете версию JDK, совместимую с библиотекой NB-Javac. Могут возникнуть проблемы с совместимостью между различными версиями JDK и библиотек.

4. **Настройка сборки**:
   Убедитесь, что ваш проект правильно настроен и все зависимости указаны в системе сборки (например, Gradle или Maven). Проверьте файл `build.gradle` для наличия всех нужных зависимостей.

5. **Используйте альтернативные пути компиляции**:
   Если данная проблема не удается решить, вы также можете рассмотреть возможность использования запусков через командную строку, передавая код на компиляцию через `javac` с выполнением в фоновом режиме.

Если после выполнения этих шагов ошибка остаётся, сообщите больше деталей о вашем окружении (версия JDK, среда разработки и т.д.), и попробуем найти более специфическое решение.
NB-Javac - это не библиотека, а просто патченная версия утилиты javac для использования внутри IDE NetBeans. Для компиляции, она использует все те же классы, которые и обычный java, а их в Android нет, так как там хоть используется язык Java, но рантайм совсем другой, никак не связанный корпорацией Sun. Проще говоря, NB-Javac в Android применить нельзя, ошибку никак не исправить.
Похожие вопросы