سؤال

أنا أعمل على بسيط بناء السيناريو الذي يجب أن تحصل على بعض الثوابت من فئة java الملف واستخدامها إصدار الأرقام في ملف أسماء.يمكنني استخدام الكسوف الخاصة النمل ، ولكن وضع bcel-5.2.jar في يبس مجلد في classpath النملة على المكالمة.

<target name="generate_version" depends="compile">
    <loadproperties srcfile="${dir.dest}/MyVersion.class">
        <classpath>
            <fileset dir="${dir.libs}">
                <include name="**/bcel*.jar"/>
            </fileset>
        </classpath>

        <filterchain>
            <classconstants/>
        </filterchain>
    </loadproperties>
</target>

ولكن للأسف النمل المهمة loadproperties فشل:

build.xml:46: expected a java resource as source

بعد أن حاولت تشغيل النمل من خارج الكسوف باستخدام سطر الأوامر هذا:

set ANT_HOME=C:\Program Files\Java\ant\apache-ant-1.7.1
"%ANT_HOME%\bin\ant.bat"

والنتيجة هي

Buildfile: build.xml

init:
     [echo] Building project.
     [echo] ant.home:          C:\Program Files\Java\ant\apache-ant-1.7.1
     [echo] ant.java.version:  1.6
     [echo] ant.version:       Apache Ant version 1.7.1 compiled on June 27 2008

compile:
    [javac] Compiling 262 source files to **********\build
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.

generate_version:

BUILD FAILED
********************\ant\build.xml:46: expected a java resource as source

أنا حقا فقدت الآن.هل هو bcel الخطأ ؟ هو نملة التعارض مع بلدي bcel?

واحد آخر تلميح:إزالة bcel classpath دخول من النمل الهدف النتائج في هذا:

Buildfile: build.xml

init:
     [echo] Building project.
     [echo] ant.home:          C:\Program Files\Java\ant\apache-ant-1.7.1
     [echo] ant.java.version:  1.6
     [echo] ant.version:       Apache Ant version 1.7.1 compiled on June 27 2008

compile:
    [javac] Compiling 262 source files to ********************\build
    [javac] Note: Some input files use or override a deprecated API.
    [javac] Note: Recompile with -Xlint:deprecation for details.
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.

generate_version:

BUILD FAILED
java.lang.NoClassDefFoundError: org/apache/bcel/classfile/ClassParser
        at org.apache.tools.ant.filters.util.JavaClassHelper.getConstants(JavaClassHelper.java:47)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

التحديث بعد وضع النمل تفضيلات في الكسوف ، رسالة الخطأ تغيير:

BUILD FAILED
*********************\build.xml:46: org.apache.bcel.classfile.ClassFormatException:  is not a Java .class file
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:115)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:357)
    at org.apache.tools.ant.Target.performTasks(Target.java:385)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
    at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
    at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)

الآن أعتقد أنه ربما نسخة الصراع بين النمل و BCEL.أو BCEL و JDK1.6.أو الكسوف BCEL النملة أو جدك...أنا فقدت.


الجواب:

هذا هو التعليق أدناه

يجب أن يكون ذكر هذا - أنت لا تحتاج إلى تحويل أي شيء.الطبيب:"منذ النمل 1.7, طابع الترميز ISO-8859-1 يستخدم لتحويل من الشخصيات العودة إلى بايت, لذا على المرء أن استخدام هذا الترميز على قراءة فئة java الملف." هذا هو مجرد اتفاقية للحصول على جولة حقيقة أن شخصية مرشح يستخدم على الخام بايت.ant.apache.org/manual/CoreTypes/... باستخدام UTF-8 سيكون سيئا!– ماكدويل

هل كانت مفيدة؟

المحلول

تبا, كنت أعرف ذلك!أنه يأتي إلى أسفل إلى ترميز ملف القضايا.الملفات لا تزال في ISO-8819-1, ولكن أنا باستخدام UTF-8.المشروع جدا العمر تم إنشاؤها مع خطأ ترميز في المكان.إعداد المعلمة ترميز في javac و loadproperties مهمة إصلاح ذلك.

<target name="generate_version" depends="compile">
    <loadproperties encoding="iso-8859-1" srcfile="${dir.dest}/MyVersion.class">
        <filterchain>
            <classconstants/>
        </filterchain>
    </loadproperties>
</target>

اعتقدت أنه تغير قبل التخريب الخادم, ولكن أعتقد أن تحويل كل ملف واحد إلى UTF-8 نفسي الآن...أعتقد أن هذا هو سؤال آخر عن ذلك.

نصائح أخرى

على وثائق loadproperties يقول أن المتداخلة classpath العنصر هو للاستخدام مع الموارد السمة - بديل لاستخدام srcfile.

إضافة BCEL جرة العالمي classpath.في الكسوف ، إضافة العالمية الدخول إلى حسابك في classpath وقت التشغيل تفضيلات.على سطر الأوامر ، استخدام -lib التبديل.

alt text
(المصدر: eclipse.org)

يبدو classpath خطأ.تشغيل "النمل -v" لإعطاء المزيد من التفاصيل عن الأخطاء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top