【问题标题】:GWT Java itextpdf - java.security.AccessControlExceptionGWT Java itextpdf - java.security.AccessControlException
【发布时间】:2016-11-28 04:03:51
【问题描述】:

我正在使用 itextpdf 并尝试通过以下方式编写文件:

public class ScoutTranscript {

//static String filePath = System.getProperty("user.home") + "\\Desktop\\ScoutTranscript.pdf";
static String filePath = "/ScoutTranscript.pdf";
private static String FILE = filePath;

但是,在日志中我得到了错误:

java.security.AccessControlException: access denied ("java.io.FilePermission" "/ScoutTranscript.pdf" "write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkWrite(SecurityManager.java:979)
at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
at java.io.FileOutputStream.<init>(FileOutputStream.java:110)
at org.AwardTracker.server.ScoutTranscript.main(ScoutTranscript.java:44)
at org.AwardTracker.server.MySQLConnection.scoutTranscript(MySQLConnection.java:17126)

请问我应该如何创建文件路径?

【问题讨论】:

  • 您似乎没有权限写入文件路径指向的根目录。
  • 您的代码部署在哪里? Tomcat或任何其他服务器?您需要授予一组权限才能解决此问题。这是指向此类问题的指针,链接here
  • 顺便说一下,考虑到您显示的问题的代码和堆栈跟踪,似乎与 itext 或 gwt 无关。因此,我会删除这些标签。另一方面,您的 Web 应用程序服务器(tomcat 或其他)很可能会参与其中。因此,您可能需要相应地添加标签。
  • 我无法更新标签。我正在使用 Tomcat。
  • 我查看了链接,但无法确定这段代码的去向。我不是程序员。我正在使用 Eclipse 并调出项目属性;但是,我在那里找不到任何东西。

标签: java tomcat pdf pdf-generation


【解决方案1】:

如果您使用的是 Tomcat,那么您可能需要将以下权限参数添加到您的 catalina.policy 中才能解决问题。

grant codeBase "file:${catalina.home}/webapps/ApplicationName/-" { 
    permission java.security.AllPermission; 
};

请参考this 进行类似讨论。考虑根据您使用的路径更改路径。

@Glyn,@mkl 说得对,这个问题与 GWTiText 无关,因此删除了这两个标签。

【讨论】:

  • 这很棒。我在 Eclipse --> Properties --> Java Build Path 中发现我的 Tomcat 在 C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf 中。因此,在 catalina.policy 的末尾,我只需添加: grant codeBase "file:${catalina.home}/webapps/ScoutTranscript/-" { permission java.security.AllPermission; }; (ScoutTranscript 是类名)。那是对的吗?这会再编译并包含在战争中吗?我想绝对确定,因为我只能在生产中测试它,我不希望我的安全性出现巨大的差距。
  • 路径应该是您尝试写入文件的位置
  • 对不起,这对我来说没有意义。只有应用程序名称没有路径。在这种情况下,“ScoutTranscript”是替换“ApplicationName”的正确值吗?请问路径在哪里?
  • @Glyn,它被用作参数filePath。请看一下代码,如果我遗漏了什么,请告诉我!
  • 您好,非常感谢您的耐心等待。请您回答以下每个问题。 (1) 为什么提到 static String filePath = "/ScoutTranscript.pdf";有问题吗?是的,这是我创建和存储的 pdf 文件。 (2) 所以,在 catalina.policy 的末尾我简单地添加: grant codeBase "file:${catalina.home}/webapps/ScoutTranscript/-" { permission java.security.AllPermission; }; (ScoutTranscript 是类名)。那是对的吗? (3) 这会被编译并包含在战争中吗? (4) 这会带来任何安全问题吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多