2013-11-14 4 views
1

Недавно я перешел на Linux Mint 15, и у меня проблемы с Eclipse и ant. Это часть муравьиного сценария, который вызывает тревогу:Ошибка при запуске ant build из eclipse в Linux. Не удалось вызвать wsimport из ant

   <exec osfamily="unix" executable="wsimport"> 
        <arg line="${prefix}/${jaxb.resources}/${[email protected]{i}} -s ${prefix}/${jaxb.src} -p ${[email protected]{i}} -wsdllocation ${[email protected]{i}} -b ${prefix}/jaxb-bindings.xml -Xdebug -verbose -Xnocompile" /> 
       </exec> 

Однако, во время сборки, используя муравей в затмении, я получаю следующее сообщение об ошибке:

Execute failed: java.io.IOException: Cannot run program "wsimport": error=2, No such file or directory 

Я понимаю, что это связано с тем, что Eclipse не может найти инструмент wsimport, который является частью JDK. Однако, если я запускаю этот скрипт ant внутри терминала, все проходит правильно. My .bashrc имеет переменную PATH, установленную в папку jdk/bin, а wsimport доступен через терминал. Eclipse использует версию ant, установленную на моей машине (не встроенную), и проект построен с использованием JDK-компилятора (не встроен в один). Я использую Oracle JDK 1.7.0_45 64-бит.

Заранее благодарен.

Edit:

Я установил свой JDK вручную (не пакет установки) в/USR/Lib/Jvm/JDK. Настроил его с помощью альтернатив обновлений и задал переменные JAVA_HOME и PATH в моем .bashrc. Как я уже сказал, ant-скрипт работает от терминала, но не от Eclipse (на ant ant). Возможно, eclipse не знает переменной PATH в .bashrc ...

+0

Возможно, попробуйте дать полный путь к исполняемому файлу. Послушайте, что вам, возможно, придется перезапустить Eclipse, чтобы забрать новую среду. –

+0

Благодарим вас за ответ, но этот скрипт должен быть переносимым. Каждая машина, у которой есть правильная переменная PATH, должна запускать ее. Однако по какой-то причине мусор Eclipse, похоже, не правильно выбирает переменные. Я установил свой JDK вручную, а не установщик пакетов. Может быть, это как-то связано с этим. – JohnCoss

ответ

2

(Это старый вопрос, но, возможно, это поможет другим в будущее.) Вы можете запускать wsgen и wsimport с задачами Ant. Я не знаком со всеми вашими переменными, поэтому мой пример просто делает свое дело. Она требует переменных:

  • metro.home - расположение WebServices-tools.jar
  • build.classpath - путь к классу зависимых файлов .jar
  • build.classes - путь к классам класса @WebService
  • имя_базовой_папки - место, где вы пишете wsgen и wsimport файлы

Вот пример.

<!-- setup Metro tooltime classpath --> 
<path id="tool.cp"> 
    <path refid="runtime.cp"/> 
    <pathelement location="${metro.home}/webservices-tools.jar"/> 
</path> 

<!-- 
    Setup Wsimport ant task. You would use this task in WSDL to Java case 
    to compile a WSDL and generate Java classes. 
--> 
<taskdef name="wsimport" classname="com.sun.tools.ws.ant.WsImport"> 
    <classpath refid="tool.cp"/> 
</taskdef> 

<!-- 
    Setup Wsgen ant task. You would use this task in Java to WSDL case to 
    generate a WSDL or wrapper classes. 
--> 
<taskdef name="wsgen" classname="com.sun.tools.ws.ant.WsGen"> 
    <classpath refid="tool.cp"/> 
    <classpath refid="build.classpath"/> 
</taskdef> 

<target name="wsimport"> 
    <wsgen sei="com.company.app.ws.Authorize" 
     classpath="${build.classes}" 
     sourcedestdir="${basedir}/wsgen/src" 
     destdir="${basedir}/wsgen/classes" 
     keep="true" verbose="true" genwsdl="true" resourcedestdir="wsgen"> 
     <classpath refid="build.classpath"/> 
    </wsgen> 
    <wsimport verbose="true" keep="true" 
     destdir="${basedir}/wsimport/classes" 
     sourcedestdir="${basedir}/wsimport/src" 
     wsdl="${basedir}/wsgen/AuthorizeService.wsdl" 
    /> 
</target> 

ПРИМЕЧАНИЕ. Это также работает для меня при запуске скрипта Ant от Jenkins, работающего на RedHat.

ПРИМЕЧАНИЕ. Если вы попытаетесь запустить Ant с помощью внешних инструментов в Eclipse, могут возникнуть проблемы, если вы выберете JRE, например. «jre7» для JRE в конфигурации внешних инструментов; лучше настроить и использовать JDK, например. "Jdk1.7.0_80". Кроме того, добавьте «tools.jar» в качестве дополнительной записи Classpath в настройке внешнего инструмента.

Смежные вопросы