0

I'm trying to add proguard to obfuscate my java code with nebeans. I've
followed a blog where it says that I must add some code in build.xml. I've
modified build.xml but it gives me an error:

jar doesn't support the nested "property" element.

I added proguard location and all blog code but always gives me that error.
Could you help me please? Thanks.

I put the code of my build.xml:

    <?xml version="1.0" encoding="UTF-8"?><project
name="AFB_CONEXIONES_DENTRO" default="default" basedir=".">
    <description>Builds, tests, and runs the project
AFB_CONEXIONES_DENTRO.</description>
    <import file="nbproject/build-impl.xml"/><target name="-post-jar">
  <jar jarfile="dist/AFB_con_librerias.jar">
    <zipfileset src="${dist.jar}" excludes="META-INF/*" />
    <zipfileset src="lib/ojdbc6.jar" excludes="META-INF/*" />
    <zipfileset src="lib/proguard.jar" excludes="META-INF/*" />
    <zipfileset src="lib/log4j-1.2.17.jar" excludes="META-INF/*" />
    <zipfileset src="lib/postgresql-9.2-1002.jdbc4.jar" excludes="META-INF/*" />
    <property name="proguard.jar.path"
value="/home/y9c4db/Downloads/proguard6.1.1/lib/proguard.jar" />


        <taskdef resource="proguard/ant/task.properties"
                 classpath="${proguard.jar.path}" />

        <echo message="Obfuscating ${dist.jar}..."/>
        <mkdir dir="${build.dir}/obfuscated"/>
        <proguard
printmapping="${build.dir}/obfuscated/${application.title}.map"
                  renamesourcefileattribute="SourceFile" ignorewarnings="true">

            <!-- Specify the input jars, output jars, and library jars. -->
            <injar  file="${dist.jar}" />
            <outjar file="${build.dir}/obfuscated/BalloonWindCore_JavaSE.jar" />

            <libraryjar path="${javac.classpath}" />
            <libraryjar file="${java.home.path}/jre/lib/rt.jar" />

            <!-- Keep some useful attributes. -->

            <keepattribute name="InnerClasses" />
            <keepattribute name="SourceFile" />
            <keepattribute name="LineNumberTable" />
            <keepattribute name="Deprecated" />
            <keepattribute name="*Annotation*" />
            <keepattribute name="Signature" />

            <!-- Preserve all public classes, and their public and
protected fields and methods. -->

            <keep access="public">
                <field  access="public protected" />
                <method access="public protected" />
            </keep>


            <!-- Preserve all .class method names. -->

            <keepclassmembernames access="public">
                <method type      ="java.lang.Class"
                        name      ="class$"
                        parameters="java.lang.String" />
                <method type      ="java.lang.Class"
                        name      ="class$"
                        parameters="java.lang.String,boolean" />
            </keepclassmembernames>

            <!-- Preserve all native method names and the names of
their classes. -->

            <keepclasseswithmembernames>
                <method access="native" />
            </keepclasseswithmembernames>

            <!-- Preserve the methods that are required in all
enumeration classes. -->

            <keepclassmembers extends="java.lang.Enum">
                <method access="public static"
                        type="**[]"
                        name="values"
                        parameters="" />
                <method access="public static"
                        type="**"
                        name="valueOf"
                        parameters="java.lang.String" />
            </keepclassmembers>

            <!-- Explicitly preserve all serialization members. The Serializable
                 interface is only a marker interface, so it wouldn't save them.
                 You can comment this out if your library doesn't use
serialization.
                 With this code serializable classes will be backward
compatible -->

            <keepnames implements="java.io.Serializable"/>
            <keepclassmembers implements="java.io.Serializable">
                <field  access    ="final"
                        type      ="long"
                        name      ="serialVersionUID" />
                <field  access    ="!static !transient"
                        name      ="**"/>
                <field  access    ="!private"
                        name      ="**"/>
                <method access    ="!private"
                        name      ="**"/>
                <method access    ="private"
                        type      ="void"
                        name      ="writeObject"
                        parameters="java.io.ObjectOutputStream" />
                <method access    ="private"
                        type      ="void"
                        name      ="readObject"
                        parameters="java.io.ObjectOutputStream" />
                <method type      ="java.lang.Object"
                        name      ="writeReplace"
                        parameters="" />
                <method type      ="java.lang.Object"
                        name      ="readResolve"
                        parameters="" />
            </keepclassmembers>

            <!-- Your application may contain more items that need to
be preserved;
                 typically classes that are dynamically created using
Class.forName -->

        </proguard>
    <manifest>
        <attribute name="Main-Class" value="${main.class}"/>
    </manifest>
  </jar></target></project>

Please any help? Thanks

Reply via email to