Команды «javac -h» и «javah -jni» не могут найти указанный мной файл

#java #java-native-interface #javac #javah

#java #java-native-interface #javac #javah

Вопрос:

Я пытаюсь сгенерировать файл заголовка (MyClass.h) с помощью команды javah -jni MyClass.java , поскольку я использую JDK 1.8, но я также пытался использовать другую версию команды javac -h MyClass.java , но я всегда получаю следующий результат в своем терминале :
введите описание изображения здесь

Все мои файлы .java или .class находятся в этой папке.

Спасибо за помощь
[править] Я также пробовал с файлом .class, но результат тот же javac -h , но с javah -jni помощью я получаю следующий результат :
введите описание изображения здесь

Комментарии:

1. Является ли ваш класс simipleJNI в каком-либо конкретном пакете или он доступен в пакете по умолчанию?

2. его нет ни в одном пакете

3. Я могу сгенерировать SimpleJNI.h, используя 1. javac SimpleJNI.java 2. javah SimpleJNI

4. Да, теперь это работает так! опубликуйте решение, чтобы я мог пометить его как решенное 🙂

Ответ №1:

Попробуйте скомпилировать SimpleJNI.java сначала, а затем выполните команду javah.

Пример класса

 public class SimpleJNI
{
   public static void someMethod()
   {
      System.out.println("Some method");
   }
}
  

При компиляции используется javac с -classpath, если требуется какая-либо внешняя зависимость.

 javac -classpath <path_to_dependency> SimpleJNI.java 
  

или без -classpath, если нет зависимости

 javac SimpleJNI.java
  

затем выполните javah с вашим файлом .class

 javah SimpleJNI