2015-01-26 4 views
0

У меня возникли проблемы при создании файла build.xml. Я знаю, что это проблема с пути класса тега javac, но я не знаю, как его решить.Ant apache NoClassDefFoundError

[java] Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/core/Response 
[java]  at java.lang.Class.getDeclaredMethods0(Native Method) 
[java]  at java.lang.Class.privateGetDeclaredMethods(Class.java:2521) 
[java]  at java.lang.Class.getMethod0(Class.java:2764) 
[java]  at java.lang.Class.getMethod(Class.java:1653) 
[java]  at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494) 
[java]  at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486) 
[java] Caused by: java.lang.ClassNotFoundException: javax.ws.rs.core.Response 
[java]  at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
[java]  at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
[java]  at java.security.AccessController.doPrivileged(Native Method) 
[java]  at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
[java]  at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
[java]  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
[java]  at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

Библиотека моего проекта находится в "/ WebContent/WEB-INF/Lib /", и это мой файл "build.xml":

<property name="src" value="\${basedir}/src" /> 
<property name="build" value="classes" /> 
<property name="dist" value="dist" /> 
<property name="package" value="*" /> 

<target name="init"> 
<echo> Criando os diretorio classes, doc e dist.</echo> 
<mkdir dir="..\${build}" /> 
<mkdir dir="..\${dist}" /> 
</target> 

<target name="compile" depends="init" > 
<echo> Compilando o projeto.</echo> 
<javac srcdir="\${src}" destdir="..\${build}" includeantruntime="false"> 
    <classpath> 
    <fileset dir="\${basedir}/WebContent/WEB-INF/lib/"> 
     <include name="jersey-server-1.4.jar" /> 
    </fileset> 
    </classpath> 
</javac> 
</target> 

<target name="dist" depends="compile"> 
<echo> Gerando o .jar do projeto.</echo>  
<jar jarfile="..\${dist}/InfosoundWebApp.jar" basedir="..\${build}"> 
    <!-- Tornando o jar executável--> 
    <manifest> 
     <attribute name="Main-Class" value="com.informatec.restfull.ServerRestfull"/>    
    </manifest> 
</jar> 
</target> 

<target name="all" depends="dist"> 
<echo> Executa o projeto.</echo> 
<java jar="..\${dist}/InfosoundWebApp.jar" fork="true" /> 
</target> 

<target name="clear"> 
    <delete dir="..\${build}" /> 
    <delete dir="..\${dist}" />  
</target> 

Если кто-то может мне помочь, я буду благодарен.

ответ

0

Похоже, вы пытаетесь запустить приложение JavaEE с JavaSE. Класс javax/ws/rs/core/Response доступен только в JavaEE (на вашем веб-сервере). Ваш build.xml target = "all" пытается выполнить ваш webapp под JavaSE. Избавиться от этого. Сделайте target = "dist" целевой по умолчанию, а затем загрузите свою банку на свой веб-сервер (Tomat и т. Д.).

+0

Привет, tks для ответа. Вы знаете, как я могу структурировать целевую «компиляцию» для импорта библиотек? – pedrodurek

+0

Вам не нужно импортировать библиотеки. Путь к классам позволит вам скомпилировать java-файлы. Затем dist делает вашу банку, которая должна быть файлом WAR. Я думаю, вам нужно исследовать, как создать пакет JavaEE, а не стандартный JAR-файл. Файл WAR загружается на веб-сервер и запускает его. Вы не запускаете его из командной строки java. –

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