java - 使用 proguard 编译项目 netbeans 时出错
问题描述
我正在尝试添加 proguard 以使用 nebeans 混淆我的 java 代码。我关注了一个博客,上面说我必须在build.xml
. 我已经修改build.xml
,但它给了我一个错误:
jar 不支持嵌套的“property”元素。
我添加了 proguard 位置和博客的所有代码,但总是给我那个错误。请问你能帮帮我吗?谢谢。
博客是https://dzone.com/articles/obfuscating-netbeans-java-appl
我把我的代码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>
请问有什么帮助吗?谢谢
解决方案
推荐阅读
- c# - c# devexpress 用前一行填充当前列
- python - 为 Subprocess.Popen 的 STDOUT 分配多个属性
- ios - 为 ios 模拟器构建,但链接和嵌入式框架 .framework' 是为 ios 构建的
- javascript - Prisma,Next JS api route prisma.create 给了我一个错误的请求
- java - Android LiveData - 对象值未更新
- excel - 根据单元格值自动过滤
- vue.js - Vue:添加新的反应属性的不同选项?
- javascript - 在 Javascript 中输出错误的日期
- angular - 错误:无法匹配任何路由。URL 段:'sockjs-node/info'
- discord.py - discord.ext.commands.errors.MissingRequiredArgument: