首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java Web Start应用程序日志记录权限被拒绝

Java Web Start应用程序日志记录权限被拒绝
EN

Stack Overflow用户
提问于 2018-07-27 00:58:29
回答 1查看 338关注 0票数 0

我的java应用独立运行得很好。但是,当我将它作为Java Web Start应用程序运行时,它会启动,但当我单击某个按钮时,它会失败。我不知道如何调试它,所以我想我应该添加日志。这会导致权限被拒绝错误,甚至不会启动。

为了尝试解决这个问题,我补充说

代码语言:javascript
运行
复制
permission java.util.logging.LoggingPermission "control"

添加到C:\Program Files\Java\jre1.8.0-171\lib\security\java.policy文件和C:\Program Files\Java\jdk1.8.0-171\jre\lib\security\java.policy文件。已重新启动Apache HttpServer并重试。同样的结果。

接下来,我将以下行添加到相同的两个文件中:

代码语言:javascript
运行
复制
permission java.security.AllPermission;

同样的结果。

接下来,我对jar文件进行了自签名。同样的结果。

接下来,我添加了

代码语言:javascript
运行
复制
<security><all-permissions/></security>

添加到动态生成的.jnlp文件。这次我收到了一条新消息:“未签名的应用程序请求不受限制地访问系统”。

jarsigner验证确认jar文件已签名:

代码语言:javascript
运行
复制
jarsigner -verify myjarfile.jar

jar已验证。

我不知道还能试什么。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 05:04:15

首先,在"control“之后需要有一个";”。我不知道这样做本身是否能解决这个问题,但我在日志文件中发现了一个解析错误。同时,我把我所有的"logger“命令改回了System.out.println命令。

接下来,我在Java控制面板的Advanced选项卡中选中了"Enable tracing“和"Enable logging”。

然后,在DOS shell中,我导航到myjnlp.jnlp文件所在的位置,并输入以下命令:

代码语言:javascript
运行
复制
set JAVAWS_TRACE_NATIVE=1
set JAVA_TOOL_OPTIONS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
javaws myjnlp.jnlp

这导致在C:\Users\Greg\AppData\LocalLow\Sun\Java\Deployment\log的主目录中创建日志文件,然后我可以在那里看到发生了什么。

不幸的是,一个新的问题。请看下面的代码:

代码语言:javascript
运行
复制
    File source = new File(localFilename);
    File dest = new File("C:/E360/CadIntegration/" +localFilename);
    try {
        Files.copy(source.toPath(),dest.toPath());
        msg = "Because IP was blank, file was copied to C:/E360/CadIntegration";
    } catch (IOException ex) {
        msg = "problem copying " +source.toPath() +" to " +dest.toPath();
        System.out.println("uploadCadChanges: " +msg +", IOException is "+ex.getMessage());
    }

如果我使用javaws运行应用程序,它工作得很好,文件复制成功。但是如果我从网页上运行它,IOException就会失败,而ex.getMessage()只会显示"CadChanges.txt“。真的很有用。

我找到原因了。当从网页运行时,当前工作目录被更改为当前目录C:\Program Files (x86)\Google\Chrome\Application\67.0.3396.99,但当从javaws运行时,则不是这样。解决方案是通过参数标签将当前目录传递给.jnlp文件,并让应用程序将cwd更改为该目录。

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

https://stackoverflow.com/questions/51544014

复制
相关文章

相似问题

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