Мой проект очень зависит от JNI для взаимодействия с кодом C. Я использую Java 8 уже много лет. Я решил перейти на Java 10, но столкнулся с проблемой реализации JNI.
У меня есть несколько импортированных библиотек в классе Java, которые содержат следующие собственные методы:
import com.abc.repair.Results;
public class DataSupport {
public native Results getPartResults(String x);
public native Results getItemResults(String x);
}
Реализация Java 8:
javah -jni -classpath ../lib/Results.jar com.abc.jni.DataSupport
Реализация Java 10:
javac -h . ../build/com/abc/jni/DataSupport.java
Реализация Java 10 отлично работает, если нет импорта из какой-либо другой библиотеки. Однако он не может создать жалобу на то, что com.abc.repair.Results не существует, когда здесь есть какой-либо импорт. Добавление пути к классам таким же способом, как в Java 8, не решило проблему.
Как я могу использовать -classpath или какую альтернативу ему в Java 10?




Вы должны указать исходный путь. В вашем случае это будет выглядеть так
javac -h . -sourcepath ../build ../build/com/abc/jni/DataSupport.java
На самом деле он работал с javac -h. -classpath ../build ../build/com/abc/jni/DataSupport.java. Мне просто нужно было поставить "." (текущий каталог) перед атрибутом -classpath. Ваш намек помог. Спасибо!
Этот . - это место для хранения сгенерированного заголовка
Вы пытались вместо этого добавить банку в
modulepath?