尝试访问Web应用程序中的文件时“拒绝访问”

时间:2014-02-26 18:43:40

标签: java file jsp uri denied

我有一个xslt文件存储在 项目/工具 文件夹中。 (我正在使用Netbeans IDE。)

我尝试在我的代码中访问此文件,但在运行时,我得到AccessControlException: access denied

代码是:

java.net.URI xsltURI = new java.net.URI(myUtil.getUri("xsltFile.xslt"));
Transformer transformer = factory.newTransformer(new StreamSource(new File(xsltURI)));

必须使用myUtil实例来访问URI,原因不重要。我打印了它的输出,它正确地给出了文件的相对路径。

我试图用file:///file:///[fulldomain]作为相对路径的前缀,但在每种情况下,它实际上都试图访问服务器上的硬盘,即使我没有给出驱动器名称。 (!)它试图访问 C:[relative-path] ,这甚至都不是文件的位置。

如果我省略file:///,那么我会得到the URI is not absolute,如果我只是提供该文件的完整网址,我会得到NullPointerException

非常感谢任何帮助。

更新:根据我的评论,我的代码类似于

java.net.URI xsltURI = new java.net.URI("https://host" + myB2U.getUri("xsltFile.xslt"));

java.net.URL xsltURL = xsltURI.toURL();

java.net.URLConnection myConnection = xsltURL.openConnection();

myConnection.connect(); //AccessControlException: access denied ("java.net.SocketPermission"...

java.io.InputStream xsltStream = myConnection.getInputStream();

Transformer transformer = factory.newTransformer(new StreamSource(xsltStream));

有什么明显的错误吗?

更新:已解决。只需添加一个权限。

2 个答案:

答案 0 :(得分:0)

file:// protocol告诉Java使用文件访问来打开流。如果您不想访问文件,则应使用其他协议,例如http://。

如果您使用相对路径,则URI应类似于file://./My/Relative/Path。第3个斜杠意味着它相对于根。

答案 1 :(得分:0)

从我收集的内容来看,我应该用文件路径实例化一个URL对象。从那里开始,我应该能够从URLConnection初始化URL。在我调用URL的{​​{1}}方法后,我应该可以通过调用connect()方法获得InputStream