首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用编译器API编译java代码时发出

使用编译器API编译java代码时发出
EN

Stack Overflow用户
提问于 2013-09-17 20:37:03
回答 1查看 295关注 0票数 3

我正在构建一个swing应用程序,它将使用java发布。这是一种java编辑器,我的应用程序的用户可以在这里编译java源代码。

问题是-

代码语言:javascript
复制
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

它在dev env中运行得很好。但是当我使用webstart部署应用程序时,在客户端返回null.It是因为我的应用程序运行在JRE上而不是JDK上。System.getProperty("java.home")指向JRE

为了解决这一问题,我遵循了以下这样的思路中提到的建议。

我将java.home属性指向JDK的安装目录。

代码语言:javascript
复制
System.setProperty("java.home","C:\\DevEnv\\java");

现在,ToolProvider.getSystemJavaCompiler();返回有效的编译器对象,但是在使用它编译java代码时,我得到了以下异常。它实际上是在调用编译器对象的getStandardFileManager方法时使用的。

代码语言:javascript
复制
    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    System.out.println("Compiler - " + compiler);

    if(compiler!=null){
        MyDiagnosticListener c = new MyDiagnosticListener(logWindow);
        StandardJavaFileManager fileManager = compiler.getStandardFileManager(c, Locale.ENGLISH, null);

        Iterable<String> options = Arrays.asList("-d", CLASS_OUTPUT_DIR);
        JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager,
                            c, options, null, files);
        Boolean result = task.call();
}

异常-

请帮我解决这个问题。

添加 JNLP

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://<dynamic-ip>:8080/" href="ProjT.jnlp">
    <information>
        <title>Tectra</title>
        <vendor>Manas Kumar Mukherjee</vendor>
        <homepage href="http://<dynamic-ip>:8080/" />
        <description>Testing Testing</description>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources>
        <j2se version="1.6+" />
        <jar href="Tools.jar" />
...
        <jar href="log4j-1.2.16.jar" />
    </resources>
    <application-desc main-class="com.ui.DevMain" />
</jnlp>

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-09-18 19:06:10

这个错误应该有助于准确地描述什么是错误的。

"AccessControlContext.checkPermission“与"AccessControlException:访问被拒绝”一起失败。

检查在此应用程序的JVM启动时与哪个用户一起运行进程。确保启动JVM的用户是拥有完整目录树的所有权限的超级用户管理员,并查看是否修复了它。然后缩小访问权限,直到它再次中断,您将拥有正确的权限级别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18859438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档