2013-07-11 1 views
2

Именно то, что говорится в названии.Сделать javah игнорировать внутренние классы при создании заголовков JNI?

У меня есть класс, который объявляет определенные методы native, но также имеет пару внутренних классов. Утилита javah настаивает на создании отдельных заголовков для внутренних классов , хотя у них нет native объявлений метода. Есть ли способ заставить javah прекратить это делать (аннотации, секретные ключи командной строки, что угодно)?

ответ

4

Я не знаю, как это сделать. (Я использую Oracle JDK.)

Я понимаю раздражение, но проблема ограничена ненужными файлами и их ненужной регенерацией (внешние изменения класса приводят к перезаписи бесполезных файлов заголовков для внутренних классов).

Чтобы решить эту проблему, я просто удалю все пустые файлы заголовков. Я использую Ant, поскольку он доступен как универсальный шаг построителя проектов в Eclipse.

<?xml version="1.0" encoding="UTF-8"?> 
<project name="javah"> 
    <mkdir dir="javah" /> 

    <javah classpath="bin" destdir="javah"> 
     <!-- list classes here --> 
     <class name="com.example.Outer" /> 
     <class name="com.example.OuterWithNatives" /> 
    </javah> 

    <delete> 
     <fileset dir="javah"> 
      <not> 
       <contains text="JNIEXPORT" /> 
      </not> 
     </fileset> 
    </delete> 

</project> 
+0

Хорошее решение - автоматическое удаление их в порядке со мной! – 0xbe5077ed