Java JNLP不合作JFileChooser访问被拒绝
我觉得自己真的很笨 因此,我正在编写一个Java应用程序,如果您能帮助我使其工作,您将能够看到它 我的jar文件在这里: 我希望它能够用作Java web start应用程序,我在这里遵循了教程: 因此,我按照指示编写了以下JNLP文件:Java JNLP不合作JFileChooser访问被拒绝,java,jnlp,Java,Jnlp,我觉得自己真的很笨 因此,我正在编写一个Java应用程序,如果您能帮助我使其工作,您将能够看到它 我的jar文件在这里: 我希望它能够用作Java web start应用程序,我在这里遵循了教程: 因此,我按照指示编写了以下JNLP文件: <?xml version="1.0" encoding="UTF-8"?> <jnlp spec="1.0+" codebase="http://team2648.com/OTIS2/admin" href="test.jnlp">
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+"
codebase="http://team2648.com/OTIS2/admin"
href="test.jnlp">
<information>
<title>OmniNode Mapper</title>
<vendor>Techplex Engineer</vendor>
</information>
<resources>
<!-- Application Resources -->
<j2se version="1.6+"
href="http://java.sun.com/products/autodl/j2se"/>
<jar href="OmniNode2.8.jar" main="true" />
</resources>
<application-desc
name="OmniNode Mapper"
main-class="omninode28.Driver"
width="300"
height="300">
</application-desc>
<update check="background"/>
</jnlp>
例外情况
java.security.AccessControlException:访问被拒绝java.io.FilePermission C:\Users\Techplex Engineer\Documents read
位于java.security.AccessControlContext.checkPermissionUnknown Source
位于java.security.AccessController.checkPermissionUnknown Source
位于java.lang.SecurityManager.checkPermissionUnknown Source
位于java.lang.SecurityManager.checkReadUnknown Source
位于java.io.File.existsUnknown Source
位于java.io.Win32FileSystem.canonicalizeUnknown Source
位于java.io.File.getCanonicalPathUnknown Source
位于sun.awt.shell.win32ShellFolderManager.createShellFolderUnknown源
位于sun.awt.shell.win32ShellFolderManager.getPersonalUnknown源
位于sun.awt.shell.win32ShellFolderManager.getUnknown源
位于sun.awt.shell.ShellFolder.getUnknown Source
位于javax.swing.filechooser.FileSystemView.getDefaultDirectoryUnknown Source
位于javax.swing.JFileChooser.setCurrentDirectoryUnknown Source
位于javax.swing.JFileChooser.Unknown Source
位于javax.swing.JFileChooser.Unknown Source
在omninode28.NodePanel.NodePanel.java:61
在omninode28.EditPanel.EditPanel.java:31
在omninode28.Driver.mainDriver.java:25
在sun.reflect.NativeMethodAccessorImpl.invoke0Native方法中
位于sun.reflect.NativeMethodAccessorImpl.invokeUnknown源
在sun.reflect.DelegatingMethodAccessorImpl.invokeUnknown源
位于java.lang.reflect.Method.invokeUnknown源
位于com.sun.javaws.Launcher.executeApplicationUnknown Source
位于com.sun.javaws.Launcher.executeMainclass未知源
位于com.sun.javaws.Launcher.doLaunchAppUnknown Source
位于com.sun.javaws.Launcher.run未知源
位于java.lang.Thread.runUnknown Source
所以它指向的那些文件:
此行:fc=新的JFileChooser
因此,这让我相信我需要请求用户的权限才能写入他们的系统
我糊涂了。
任何帮助都是超级的,
谢谢
编辑。。。
我应该让用户直接下载Jar吗?
利与弊?一种可能是,您的jar未按所述进行签名一种可能是,您的jar未按所述进行签名显然,您浏览的任何网站都无法从本地文件系统读取内容。所以这是不允许的
也许解决这个问题的最好方法是使用。这为应用程序提供了一个简单的界面,让它可以访问某种描述的文件选择器,该选择器可以在不直接访问文件系统的情况下打开、读取和写入用户选择的文件。显然,如果您浏览的任何网站都能够从本地文件系统读取,这将是一个坏主意。所以这是不允许的
也许解决这个问题的最好方法是使用。这为应用程序提供了一个简单的界面,可以打开一些描述的文件选择器,很遗憾,这些选择器可以在不直接访问文件系统的情况下打开读写用户选择的文件。您必须对JAR进行签名,并通过将此代码段添加到jnlp中来授予类权限:
<security>
<all-permissions/>
</security>
您必须对JAR进行签名,并通过将以下代码段添加到jnlp中来授予类权限:
<security>
<all-permissions/>
</security>
FileOpenService只允许应用程序读取文件。正是FileSaveService为写作服务。下面是FOS/FSS和FileContents对象的演示@Andrew Thompson FileOpenService还允许修改所选文件。在文件选择器之前有一个毫无意义的安全警告对话框,该对话框通常表示“刚刚读取”。显示了程序员对安全警告的重视程度。不幸的是,“打开”安全提示已更改,因为它现在非常不准确。即使选中“始终允许”,接受提示仍会在用户保存文件时产生提示。或者至少,这是我目前在PSCode演示中看到的行为。您能提供不同的代码或演示吗?FileOpenService只允许应用程序读取文件。正是FileSaveService为写作服务。下面是FOS/FSS和FileContents对象的演示@Andrew Thompson FileOpenService还允许修改所选文件。在文件选择器之前有一个毫无意义的安全警告对话框,该对话框通常表示“刚刚读取”。显示了程序员对安全警告的重视程度。不幸的是,“打开”安全提示已更改,因为它现在非常不准确。即使选中“始终允许”,接受提示仍会在用户保存文件时产生提示。或者至少,这是我目前在PSCode演示中看到的行为。可以 您提供的代码或演示的行为有所不同?