Java jar符号信息:tdstrip相当于什么?

时间:2010-02-18 09:48:24

标签: java jar debug-symbols

我有一个1MB的.jar文件。没有调试信息,它应该是大约100KB。现在,我该如何去除调试信息?

来自borland世界的老人可能记得一个名为tdstrip的工具,它会从.exe中删除符号信息。

Java世界中的等价物是什么?我正在尝试进行移动开发,其中1MB文件太大了。

我知道我可以在没有调试信息的情况下重新编译和重建.jar文件,但是如果你没有源代码等,你会怎么做呢?

3 个答案:

答案 0 :(得分:4)

使用%JAVA_HOME%/bin/pack200 -r -G jartostrip.jar

Usage:  pack200 [-opt... | --option=value]... x.pack[.gz] y.jar

Packing Options
  -g, --no-gzip                   output a plain *.pack file with no zipping
  --gzip                          (default) post-process the pack output with gzip
  -G, --strip-debug               remove debugging attributes while packing
  -O, --no-keep-file-order        do not transmit file ordering information
  --keep-file-order               (default) preserve input file ordering
  -S{N}, --segment-limit={N}      output segment limit (default N=1Mb)
  -E{N}, --effort={N}             packing effort (default N=5)
  -H{h}, --deflate-hint={h}       transmit deflate hint: true, false, or keep (default)
  -m{V}, --modification-time={V}  transmit modtimes: latest or keep (default)
  -P{F}, --pass-file={F}          transmit the given input element(s) uncompressed
  -U{a}, --unknown-attribute={a}  unknown attribute action: error, strip, or pass (default)
  -C{N}={L}, --class-attribute={N}={L}  (user-defined attribute)
  -F{N}={L}, --field-attribute={N}={L}  (user-defined attribute)
  -M{N}={L}, --method-attribute={N}={L} (user-defined attribute)
  -D{N}={L}, --code-attribute={N}={L}   (user-defined attribute)
  -f{F}, --config-file={F}        read file F for Pack200.Packer properties
  -v, --verbose                   increase program verbosity
  -q, --quiet                     set verbosity to lowest level
  -l{F}, --log-file={F}           output to the given log file, or '-' for System.out
  -?, -h, --help                  print this message
  -V, --version                   print program version
  -J{X}                           pass option X to underlying Java VM

Notes:
  The -P, -C, -F, -M, and -D options accumulate.
  Example attribute definition:  -C SourceFile=RUH .
  Config. file properties are defined by the Pack200 API.
  For meaning of -S, -E, -H-, -m, -U values, see Pack200 API.
  Layout definitions (like RUH) are defined by JSR 200.

Repacking mode updates the JAR file with a pack/unpack cycle:
    pack200 [-r|--repack] [-opt | --option=value]... [repackedy.jar] y.jar

答案 1 :(得分:1)

在移动世界中部署时,通过一些混淆工具运行整个jar文件是很常见的。

主要用途不是让反编译更难,而是大大减小jar的大小。

混淆工具已经实现了许多减少jar大小的步骤:

  • 尽可能少地缩短所有存储的标识符
  • 剥离所有调试信息和非必要属性
  • 甚至可能重写字节码以减少占用空间

答案 2 :(得分:1)

Proguard有缩小字节码的选项。