Просто из любопытства я пытаюсь настроить Eclipse, чтобы он мог скомпилировать и запустить приложение с исправленным классом стандартной библиотеки.
У меня есть 2 Java-проекта patch
и consumer
: один содержит класс исправления строки (с новым методом size()
, идентичным length()
), а другой должен использовать указанный метод size()
. Установка следующая:
- patch
- bin (contains class files)
- src
- java
- lang
- String.java
- consumer
- src
- consumer
- Main.java
- module-info.java
Основная.java:
package consumer;
public class Main {
public static void main(String[] args) {
String s = new String("hello");
System.out.println(s.size());
}
}
После компиляции patch
(тем самым получая String.class
внутри patch/bin/java/lang/
) я знаю, что могу легко использовать:
java --patch-module java.base=patchpjt/bin/ consumer/src/consumer/Main.java
Чтобы правильно вызвать вновь добавленный метод size()
, получив результат 5
.
Проблема в том, что в Eclipse метод size
по-прежнему не распознается (ошибка заключается в том, что метод Size() недоопределен для типа String):
Итак, мой вопрос:
- Как настроить Eclipse, чтобы проект
consumer
корректно компилировался, запускался и не выдавал ошибок? - Как настроить Eclipse, чтобы в Content Assist отображался метод
size()
?
Я знаю, что мне нужно использовать Build Path -> Module Path -> Edit Is Modular -> Details Tab -> Patched module
, но я не знаю, как настроить оба проекта.
Некоторая информация, которая может оказаться полезной:
- Затмение 2018-12 (4.10.0) Идентификатор сборки: 20181214-0600
Спасибо за любой ответ.