Не удается запустить команду Ant с JDK 9 в Windows 7

  1. Cooja is a tool of embedded operation system--Contiki.
  2. Cooja uses Ant command to run(at the directory of Cooja,there has a build.xml file).
    • I'm using Ant with version of 1.10.1.
  3. Ant is a java-based tool and it needs a JDK installed in system.
    • I'm using JDK-9 to run with Ant.
  4. когда я использую команду «ant run» в каталоге Cooja, возникает проблема, cmd.exe, где я использую команду «ant run» для запуска Cooja, говорит

«java.xml.bind не виден» и «пакет javax.xml.bind объявлен в модуле java.xml.bind, которого нет в графике модуля».

  1. Then I search for answer with google and I understand that this problem caused by the new module system of JDK-9.
    • here is the link of the document which introduces the module system and there occur the same problem with mine and elaborate why it occurs.
    • но документ устраняет проблему с помощью команды javac с помощью опции «--add-modules», и я не знаю, как исправить мою при использовании команды Ant, такой опции нет.
  2. Если я использую JDK-8 для работы с Ant, проблема может быть решена, потому что версия JDK не имеет модульной системы.

person Addy    schedule 09.10.2017    source источник


Ответы (1)


Файл сборки Ant должен вызывать компилятор Java с помощью задачи javac. Чтобы обновить его с помощью параметра --add-modules, найдите соответствующий вызов javac и вставьте параметр как вложенный аргумент компилятора, например:

<javac srcdir="src" destdir="classes">
    <compilerarg arg="--add-modules java.xml.bind"/>
</javac>
person M A    schedule 09.10.2017
comment
Да, ваш метод заставляет мою программу работать! И я добавляю коды в файл build.xml, немного отличающиеся от ваших. Вот коды: <javac ...> <compilerarg line="--add-modules java.xml.bind"/> </javac> И до того, как эта проблема будет решена, все, что я пытался сделать, это добавить некоторые параметры, такие как «modulepath» или «modulepathref», к задаче javac build.xml, но, к сожалению, этот способ не может работать. В любом случае, большое спасибо. - person Addy; 10.10.2017
comment
См. также blog.codefx.org /java/java-9-миграция-руководство/. Идеальное решение состоит в том, чтобы преобразовать код Java, который вы создаете, в модуль и добавить «java.xml.bind» в качестве обязательного модуля в объявление модуля. Это может быть невозможно, если код, который вы создаете, является сторонним, в этом случае можно использовать «--add-modules». - person M A; 10.10.2017
comment
Имейте в виду, что модуль java.xml.bind устарел для удаления из Java SE. Поэтому некоторые будущие выпуски Java SE/JDK не будут включать модуль java.xml.bind. Таким образом, лучшим среднесрочным решением является переход на автономную версию JAXB. Подробнее об этом читайте в Руководстве по миграции JDK 9 (docs.oracle.com/javase/9). /migrate/toc.htm). - person Alan Bateman; 10.10.2017