Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > Проблема: Ant не признет compilator level 5.0


Автор: Shony 8.5.2007, 23:52
Снова проблема с версиями компиляторов...

У меня в Єклипсе виставлено Compiler compliance level 5.0.
Стоит задача: построит war файл.

Собираю следующим способом: в контекстном меню файла Build.xml в проекте выбираю: Ran as -> Ant build

Идет сборка...

Когда      target="1.5",
в консоль вываливается такое:


Buildfile: C:\eclipse\workspace\comedy\build.xml

build:
       [javac] Compiling 7 source files to C:\eclipse\workspace\comedy\war\WEB-INF\classes
       [javac] C:\eclipse\workspace\comedy\src\comedyClub\portal\core\Rating.java:5: package org.apache.commons.lang.builder does not exist
       [javac] import org.apache.commons.lang.builder.EqualsBuilder;
       [javac]                                        ^
       [javac] C:\eclipse\workspace\comedy\src\comedyClub\portal\core\Rating.java:6: package org.apache.commons.lang.builder does not exist
       [javac] import org.apache.commons.lang.builder.HashCodeBuilder;
       [javac]                                        ^
       [javac] C:\eclipse\workspace\comedy\src\comedyClub\portal\core\Rating.java:7: package org.apache.commons.lang.builder does not exist
       [javac] import org.apache.commons.lang.builder.ToStringBuilder;
       [javac]                                        ^
       [javac] C:\eclipse\workspace\comedy\src\comedyClub\portal\core\User.java:3: package org.apache.commons.lang.builder does not exist
       [javac] import org.apache.commons.lang.builder.EqualsBuilder;
       [javac]                                        ^
       [javac] C:\eclipse\workspace\comedy\src\comedyClub\portal\core\User.java:4: package org.apache.commons.lang.builder does not exist
       [javac] import org.apache.commons.lang.builder.HashCodeBuilder;
       [javac]                                        ^
       [javac] C:\eclipse\workspace\comedy\src\comedyClub\portal\core\User.java:5: package org.apache.commons.lang.builder does not exist
       [javac] import org.apache.commons.lang.builder.ToStringBuilder;
       [javac]                                        ^
       [javac] C:\eclipse\workspace\comedy\src\comedyClub\portal\core\Story.java:7: package org.apache.commons.lang.builder does not exist
       [javac] import org.apache.commons.lang.builder.EqualsBuilder;
    
..... и т.д. ...........


       [javac] symbol  : class Transaction
       [javac] location: class comedyClub.portal.core.comedyClubPortalDAO
       [javac]        Transaction transaction = null;
       [javac]                 ^
       [javac] 28 errors

BUILD FAILED
C:\eclipse\workspace\comedy\build.xml:46: Compile failed; see the compiler error output for details.

Total time: 4 seconds




Когда      target="5.0" - такое:


Buildfile: C:\eclipse\workspace\comedy\build.xml

build:
       [javac] Compiling 7 source files to C:\eclipse\workspace\comedy\war\WEB-INF\classes
       [javac] javac: invalid target release: 5.0
       [javac] Usage: javac <options> <source files>
       [javac] where possible options include:
       [javac]   -g                         Generate all debugging info
       [javac]   -g:none                    Generate no debugging info
       [javac]   -g:{lines,vars,source}     Generate only some debugging info
       [javac]   -nowarn                    Generate no warnings
       [javac]   -verbose                   Output messages about what the compiler is doing
       [javac]   -deprecation               Output source locations where deprecated APIs are used
       [javac]   -classpath <path>          Specify where to find user class files
       [javac]   -cp <path>                 Specify where to find user class files
       [javac]   -sourcepath <path>         Specify where to find input source files
       [javac]   -bootclasspath <path>      Override location of bootstrap class files
       [javac]   -extdirs <dirs>            Override location of installed extensions
       [javac]   -endorseddirs <dirs>       Override location of endorsed standards path
       [javac]   -d <directory>             Specify where to place generated class files
       [javac]   -encoding <encoding>       Specify character encoding used by source files
       [javac]   -source <release>          Provide source compatibility with specified release
       [javac]   -target <release>          Generate class files for specific VM version
       [javac]   -version                   Version information
       [javac]   -help                      Print a synopsis of standard options
       [javac]   -X                         Print a synopsis of nonstandard options
       [javac]   -J<flag>                   Pass <flag> directly to the runtime system

BUILD FAILED
C:\eclipse\workspace\comedy\build.xml:46: Compile failed; see the compiler error output for details.

Total time: 1 second


Фрагмент файла  Build.xml  (тоисть один из тарджетов) имеет вид:

Код

<target name="build" description="Compile main source tree java files">
        <mkdir dir="${build.dir}"/>
        <javac destdir="${build.dir}" target="5.0" debug="true"
               deprecation="false" optimize="false" failonerror="true">
            <src path="${src.dir}"/>
            <classpath refid="master-classpath"/>
        </javac>
    </target>




Подскажите, пожалуйста, как бы выйли с этой ситуации?


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

Автор: LSD 9.5.2007, 11:52
Первая ошибка связана с тем, что Jakarta commons-lang не находится в CLASSPATH, и никак не связанна с target.
А во втором случае, действительно неправильно указан target.

Автор: Shony 9.5.2007, 12:34
LSD, спасибо за ответ, но а как сделать так чтобы Jakarta commons-lang находилась в CLASSPATH?

Автор: LSD 9.5.2007, 12:41
Добавь commons-lang.jar в master-classpath, или:
Код
<classpath>
  <filelist refid="master-classpath"/>
  <include name="где-то/тут/был/commons-lang.jar"/>
</classpath>

Автор: Shony 9.5.2007, 12:43
Прошу прощение за необдуманый ответ,
вот, собственно, то что есть в CLASSPATH:

Код

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="lib" path="lib/commons-collections-2.1.1.jar"/>
    <classpathentry kind="lib" path="lib/commons-lang-2.3.jar"/>
    <classpathentry kind="lib" path="lib/commons-logging-1.1.jar"/>
    <classpathentry kind="lib" path="lib/jta-1.0.1B.jar"/>
    <classpathentry kind="lib" path="lib/junit-3.8.2.jar"/>
    <classpathentry kind="lib" path="lib/mysql-connector-java-3.1.14.jar"/>
    <classpathentry kind="lib" path="lib/spring-2.0.4.jar"/>
    <classpathentry kind="lib" path="lib/hibernate/antlr-2.7.6.jar"/>
    <classpathentry kind="lib" path="lib/hibernate/asm.jar"/>
    <classpathentry kind="lib" path="lib/hibernate/cglib-2.1.3.jar"/>
    <classpathentry kind="lib" path="lib/hibernate/dom4j-1.6.1.jar"/>
    <classpathentry kind="lib" path="lib/hibernate/ehcache-1.2.3.jar"/>
    <classpathentry kind="lib" path="lib/hibernate/hibernate3.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/jstl.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/log4j-1.2.13.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/servlet-api-2.4.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/standard.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/commons-logging-1.1.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/spring-2.0.4.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>




commons-lang здесь вроде есть.

<classpathentry kind="lib" path="lib/commons-lang-2.3.jar"/>

но проблема остается....

Автор: LSD 9.5.2007, 13:07
Для начала сделай так:
Код
<property name="cp" refid="classpath"/>
<echo message="${cp}"/>

и убедись, что путь корректный.

Потом проверь что в commons-lang-2.3.jar есть каталог org/apache/commons/lang/builder.

Автор: Shony 9.5.2007, 13:49
Огромное спасибо!

Ошибка действительно біла в CLASSPATH!

Я изначально нетуда скопировал нужные библиотеки...

Теперь CLASSPATH такой:

Код

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/antlr-2.7.6.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/asm.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/cglib-2.1.3.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/commons-collections-2.1.1.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/commons-lang-2.3.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/commons-logging-1.1.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/dom4j-1.6.1.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/ehcache-1.2.3.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/hibernate3.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/jstl.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/jta-1.0.1B.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/junit-3.8.2.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/log4j-1.2.13.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/mysql-connector-java-3.1.14.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/servlet-api-2.4.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/spring-2.0.4.jar"/>
    <classpathentry kind="lib" path="war/WEB-INF/lib/standard.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>



и все работает!


И еще,
 
Я понял, что эклипсовый Compiler compliance level 5.0 не имеет никакого отношения к Ant



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)