JAR 是一个很好的压缩性工具,可以把许多 classes 档案压缩进一个 JAR 里面,节省了 HTTP request connection 的需求。
在这同时,也只有把程式压缩成 JAR 的格式,才有可能做出数字签名(signed applet),也只有数字签名,才能让 user 选择要 break the sand box: 也就是 bypass Java 的 security。
我在开发中遇到一个问题,我的所有 class 档案太大了,我的 Java project 包含了一个很庞大的 class 库,至少有一百个 class 档案。
很不巧的,我的 main class 需要 bypass Java 的 security (因为必须要用到 JNI),所以很明显,我的 main class 一定要被包装进 JAR 里面。
如果全都包装进 JAR 里面,档案太大了。而且不是每个档案都会有用到。
可是,如果不把全部档案包含进去,只把 main class 放入 JAR,其他的使用 class 的话,main class 又找不到其他的 class 档案(因为它们不在 main class 所在的 JAR 里面)
解决方法是:
添加一个 manifest.mt 的档案,里面内容加写说
Class-Path: clsHello.jar
那么,这个 clsHello.jar 就算被列入 main JAR 寻找的 classpath 范围内了。也就是说,mainHello.jar 里面的 class,可以呼叫 clsHello.jar 里面的 class 了。
这些知识对于 Java 高手应该是轻而易举,我只是要记录下来怕自己忘记了而已。
附注:如果 main JAR 被 signed 的话,其他 classpath 内的 JAR files (例如 clsHello.jar) 也必须要被 signed。否则会出现数字签名不对的问题。
至于这样搞,download main JAR files 的时候,会不会顺便也 download clsHello.jar,还是等到有用到clsHello 里面的class file的时候才装上,我就不知道了。因为除非监视 IIS或者apache 的log file,否则要查出来也是不容易的。
在这同时,也只有把程式压缩成 JAR 的格式,才有可能做出数字签名(signed applet),也只有数字签名,才能让 user 选择要 break the sand box: 也就是 bypass Java 的 security。
我在开发中遇到一个问题,我的所有 class 档案太大了,我的 Java project 包含了一个很庞大的 class 库,至少有一百个 class 档案。
很不巧的,我的 main class 需要 bypass Java 的 security (因为必须要用到 JNI),所以很明显,我的 main class 一定要被包装进 JAR 里面。
如果全都包装进 JAR 里面,档案太大了。而且不是每个档案都会有用到。
可是,如果不把全部档案包含进去,只把 main class 放入 JAR,其他的使用 class 的话,main class 又找不到其他的 class 档案(因为它们不在 main class 所在的 JAR 里面)
解决方法是:
添加一个 manifest.mt 的档案,里面内容加写说
Class-Path: clsHello.jar
那么,这个 clsHello.jar 就算被列入 main JAR 寻找的 classpath 范围内了。也就是说,mainHello.jar 里面的 class,可以呼叫 clsHello.jar 里面的 class 了。
这些知识对于 Java 高手应该是轻而易举,我只是要记录下来怕自己忘记了而已。
附注:如果 main JAR 被 signed 的话,其他 classpath 内的 JAR files (例如 clsHello.jar) 也必须要被 signed。否则会出现数字签名不对的问题。
至于这样搞,download main JAR files 的时候,会不会顺便也 download clsHello.jar,还是等到有用到clsHello 里面的class file的时候才装上,我就不知道了。因为除非监视 IIS或者apache 的log file,否则要查出来也是不容易的。
ASP开不到的祸首:防毒软件
VTK Applet 的开发进度




