梦想 就像鸡蛋
要么孵化 要么臭掉
要么孵化 要么臭掉
让classpath参数走开
Made In Zeal 转载请保留原始链接:http://www.zeali.net/entry/337
对于Java开发人员(尤其是初学者)来说,因为classpath配置问题所导致的代码编译运行出错相当普遍,经验教训足可以专文叙之。实际上,我们可以通过实现自定义的ClassLoader等方法来尽量避免classpath对于系统环境的依赖。
通过加参数调用 javac,可以在编译时使用自定义的 ClassLoader 来完成类的定位加载:
javac -J-Djava.system.class.loader=my.ClassLoaderImpl theSource.java
自定义 ClassLoader 的方式可以参考这里(基本上来说就是通过继承 findClass(String) 方法来使JVM按照自己期望的规则来加载类)。还处于beta阶段的 Mustang Java SE 6 据说将提供新的工具 javax.tools.JavaCompilerTool 来替代 javac ,这个全新的编译工具应该会给程序员更好的编译体验。
大多数流行的 java IDE 都大大简化了对于 classpath 的配置过程,以至于很多在程序员的开发环境运行良好的代码发布之后才出现各种各样的问题。所以要想让程序包能够顺利的执行于产品环境,我们通常的做法是写一堆的 bat 或 shell 脚本来完成各种运行参数的配置。而这些大段大段的脚本当中,对 classpath 的配置占了相当大的比重。
因此 Heikki Uusitalo 写了一个 BootLoader 类(原始代码似乎有些问题,这里修改了一下):将这个类作为引导程序去根据自定义的规则来加载所有必需的 jar 包等资源,然后再启动真正的 main 方法。把这个 BootLoader 类单独打包成一个 jar 文件,运行的时候只需要运行它即可。当然你可以根据实际情况修改读取的路径、规则等信息。
This Entry was Last Modified on 2007-05-28 12:09
没有评论.
发贴统计
继续阅读

我的地盘