JNLP не сотрудничает JFileChooser Отказано в доступе - PullRequest
1 голос
/ 07 октября 2010

Я чувствую себя действительно глупо ......

Итак, я пишу приложение на Java, и если вы поможете мне заставить его работать, вы сможете его увидеть.

поэтому мой jar-файл находится здесь: http://team2648.com/OTIS2/admin/OmniNode2.8.jar

Я бы хотел, чтобы его можно было использовать в качестве приложения для веб-запуска на Java. Я читал здесь руководство: http://download.oracle.com/javase/tutorial/deployment/webstart/deploying.html

поэтому я написал следующий файл 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>

Но, как вы увидите, если вы скачаете jnlp http://team2648.com/OTIS2/admin/test.jnlp
и запустите его, мы получим следующую ошибку (НаПК):

access denied (java.io.FilePermission C:\Users\MyUserName\Documents read)

Исключение

java.security.AccessControlException: доступ запрещен (java.io.FilePermission C: \ Users \ Techplex Engineer \ Documents read)
в java.security.AccessControlContext.checkPermission (Неизвестный источник)
в java.security.AccessController.checkPermission (Неизвестный источник)
в java.lang.SecurityManager.checkPermission (Неизвестный источник)
в java.lang.SecurityManck.check(Неизвестный источник)
на java.io.File.exists (Неизвестный источник)
на java.io.Win32FileSystem.canonicalize (неизвестный источник)
в java.io.File.getCanonicalPath (неизвестный источник)
в sun.awt.shell.Win32ShellFolderManager2.createShellFolder (неизвестный источник)
в sun.awt.shell.Win32ShellFolderManager2.getPersonal (Неизвестный источник)
в sun.awt.shell.Win32ShellFolderManager2.get (Неизвестный источник)
в sun.awt.shell.ShellFolder.get (Неизвестный источник)
в javax.swing.filechooser.FileSystemView.getDefaultDirectory (неизвестный источник)
в javax.swing.JFileChooser.setCurrentDirectory (неизвестный источник)
в javax.swing.JFileChooser. (Неизвестный источник)
в javax.swing.JFileChooser. (Неизвестный источник)
в omninode28.NodePanel. (NodePanel.java:61)
в omninode28.EditPanel. (EditPanel.java:31)
в omninode28.Driver.main (Driver.java:25)
на sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
на sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник)
на солнце.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник)
в java.lang.reflect.Method.invoke (Неизвестный источник)
в com.sun.javaws.Launcher.executeApplication (Неизвестный источник)
в com.sun.javaws.Launcher.executeMainClass (неизвестный источник)
на com.sun.javaws.Launcher.doLaunchApp (неизвестный источник)
на com.sun.javaws.Launcher.run (неизвестный источник)
на java.lang.Thread.run (Неизвестный источник)

Таким образом, эти файлы указывают на:

эту строку: fc = new JFileChooser ();

Так что это заставляет меня поверить, что мне нужноспросите у пользователя разрешение на запись в его систему.

Я озадачен.Любая помощь будет супер, спасибо

Редактировать ... Должен ли я просто заставить пользователей загружать Jar напрямую?плюсы минусы?

Ответы [ 3 ]

2 голосов
/ 07 октября 2010

вы должны подписать фляги и дать разрешение классам, добавив этот фрагмент в jnlp:

<security>
  <all-permissions/>
</security>
1 голос
/ 07 октября 2010

Очевидно, что любой веб-сайт, который вы просматривали, был бы плохой идеей для чтения из локальной файловой системы.Так что это не разрешено напрямую.

Возможно, лучший способ обойти это - использовать FileOpenService.Это дает приложениям простой интерфейс для средства выбора файлов с некоторым описанием, которое может открывать (читать и, к сожалению, записывать) выбранные пользователем файлы без предоставления прямого доступа к файловой системе.

0 голосов
/ 07 октября 2010

Одна возможность, ваш кувшин не подписан, как указано здесь

...