Муравей дает проблему CNF, если я использую <pathelement location = ""> - PullRequest
0 голосов
/ 27 марта 2012

Чтобы избежать проблемы длинного пути к классам в Windows, я изменил свой build.xml как [1] ввел свойство с именем "temp" и ссылается на него из "path location" Но теперь я получаю исключение «Класс не найден» [2]. Как я могу исправить свой сценарий?

Если я не использую свойство "temp" и пытаюсь прочитать "temp.classpath" как мой "classpath" javac ", я получаю длинную проблему с classpath .. (Вот почему я ввел это свойство и сделал" javac " путь как "javac.classpath")

[1]
<target name="init">
        <mkdir dir="${class.dir}"/>
        <mkdir dir="./../../work/temp/sampleClient"/>       
          <path id="temp.classpath">        
            <pathelement path="${class.dir}"/>
            <pathelement path="../../lib"/>         
            <fileset dir="../../repository/components/plugins">             
                <include name="*.jar"/>                 
            </fileset>>
            <fileset dir="../../lib">
                <include name="*.jar"/>
            </fileset>
            <fileset dir="../../lib/endorsed">
                <include name="*.jar"/>
            </fileset>
            <fileset dir="../../repository/components/extensions">
                <include name="*.jar"/>
            </fileset>
            <fileset dir="../../repository/components/lib">
                <include name="*.jar"/>
            </fileset>  
             </path>    
        <property name="temp" refid="temp.classpath" />
        <path id="javac.classpath"> 
            <pathelement location="${temp}"/>       
        </path>         
    </target>


[2]

init:

compile:

stockquote:
     [java] java.lang.NoClassDefFoundError: samples/userguide/StockQuoteClient
     [java] Caused by: java.lang.ClassNotFoundException: samples.userguide.StockQuoteClient
     [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
     [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

В ANT, чтобы избежать длинной проблемы с classpath, есть ManifestClasspath задача доступна .. Я использовал это, и теперь он работает правильно в Windows и Linux. Я написал здесь запись в блоге [1] собразец .. Если кто-нибудь найдет это полезным ..

http://vvratha.blogspot.com/2012/04/avoiding-long-classpath-issue-in-ant.html

0 голосов
/ 28 марта 2012

элемент является первоклассным объектом, если хотите, поэтому его ссылочный идентификатор можно использовать везде, где ожидается путь, с оговоркой, что это обычно немного другое свойство.Для isntance:

<javac ... classpathref="temp.classpath" >
   ...
</javac>

отлично подойдет.

Так что вам не нужно, и вы не можете передать его через свойство.

[РЕДАКТИРОВАТЬ в соответствии с моим комментарием ниже] Если вы настаиваете, однако, вы можете попробовать:

 <path id="javac.classpath"> 
     <pathelement path="${temp}"/>       
 </path>         

Обратите внимание на атрибут пути вместо местоположения.

Или, если вы настаиваете на использовании подразумеваемого javac.classpath ссылка:

 <path id="javac.classpath"> 
     <path refid="temp.classpath"/>       
 </path>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...