Java 1.6动态编译器 null问题

1、在java程序中用JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();来获取编译器时,返回的值为NULL,经过在网上查找资料,都是jre惹的祸,

我们在装java环境时,通常会装两个,一个是jdk,一个是jre,其目录形式如下:

C:\Java-->jdk1.6.0_25

            -->jre6

但是我们在eclipse或者myeclipse中开发应用程序的时候用到的是C:\Java-->jre6,但是这个下面没有编译器

在C:\Java-->jdk1.6.0_25目录下有一个jre文件夹,其内容和C:\Java-->jre6是一样的

此时我们把eclipse或者myeclipse中的jre换成C:\Java-->jdk1.6.0_25-->jre这个jre

在更改成功之后,会重新编译工程,在编译成功之后,运行程序,就可以获取到动态编译器了

2、

 

 

ToolProvider的源代码有如下一段:

private static final String[] defaultToolsLocation
            = { "lib", "tools.jar" };
privatestatic Class<?> findClass()
throws MalformedURLException, ClassNotFoundException
        {
try {
return enableAsserts(Class.forName(defaultJavaCompilerName, false, null));
            } catch (ClassNotFoundException e) {
// ignored, try looking else where
            }
            File file = new File(System.getProperty("java.home"));
if (file.getName().equalsIgnoreCase("jre"))
                file = file.getParentFile();
for (String name : defaultToolsLocation)
                file = new File(file, name);
            URL[] urls = {file.toURI().toURL()};
            ClassLoader cl = URLClassLoader.newInstance(urls);
            cl.setPackageAssertionStatus("com.sun.tools.javac", true);
return Class.forName(defaultJavaCompilerName, false, cl);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值