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