2013-08-23 1 views
0

Привет, это, вероятно, потому, что я нооб, но я пытаюсь заставить это работать в течение нескольких дней, поэтому надеюсь, что кто-то может мне помочь ... .апплет с swing mysql и файл конфигурации работает в eclipse, но не работает в браузере

идея: для Java обучения мне нужно сделать Java-апплет , который считывает и записывает данные из базы данных (локальный) MySQL. Настройки из этой базы данных должны выходить из файла config.ini.

Приложение отлично работает как апплет и приложение Java в Eclipse. Он также отлично работает как исполняемый файл jar.

я не могу получить это работает как апплет, хотя ... :(.

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

Чтобы узнать, работает ли остальное, я пропустил свой класс loadIni. Затем я получил исключение: driver not found. I решил это, загрузив банку mySQL в качестве архива в моем апплете().

Но теперь я потерян ...

Когда я запустить апплет в браузере я получаю следующее сообщение об ошибке в консоли:

java.lang.RuntimeException: java.lang.ExceptionInInitializerError 
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.instantiateApplet(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ExceptionInInitializerError 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at Kreta.DBConnection.<init>(DBConnection.java:39) 
    at Kreta.AfhaalMenus.<init>(AfhaalMenus.java:21) 
    at Kreta.test2.<init>(test2.java:39) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at java.lang.Class.newInstance(Unknown Source) 
    at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter$1.run(Unknown Source) 
    at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$200(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.awt.EventQueue$3.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.awt.EventQueue$4.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) 
    at java.awt.EventQueue.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission"   
"file.encoding" "read") 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPropertyAccess(Unknown Source) 
    at java.lang.System.getProperty(Unknown Source) 
    at com.mysql.jdbc.StringUtils.<clinit>(StringUtils.java:70) 
    ... 31 more 

Я действительно надеюсь, что кто-то может послать меня в правильном направлении.

ответ

1

Апплеты не могут выполнять некоторые функции, включая ввод/вывод файлов и различные сетевые задачи; как ваш апплет пытается это сделать. Возможно, вам придется подписать вам апплет.

Проверить это ссылка

http://www.coderanch.com/how-to/java/HowCanAnAppletReadFilesOnTheLocalFileSystem

0

Ответ подписывает все банки.

как сделать это еще квест, но следующий пост сделал это очень просто:

how do i sign a java applet

0
  1. Апплет не должен иметь прямой доступ к БД. Это для безопасности БД. Вместо этого он должен быть вынужден пройти через веб-службу, которая (ограничивает то, что пользователь может сделать &) сам взаимодействует с БД.
  2. Апплет, связанный с БД (или веб-службой) на том же хосте, который обслуживал его , может быть помещен в песок.
  3. Если эта ошибка чтения является частью кода подключения DB, который вы не контролируете, это хороший случай для скрытия доступа к БД за веб-службой. В противном случае есть способы чтения файла свойств (с исходного сервера), которые не вызывают AccessControlException.

Сказав все это, он выходит на сцену, где неподписанный код, вероятно, будет заблокирован до того, как он будет загружен, поэтому, возможно, первое, что вам нужно сделать, это цифровое подписание апплета и всех необходимых библиотек.


Зачем нужен апплет? Если это связано со спецификацией. преподавателем, пожалуйста, обратитесь к Why CS teachers should stop teaching Java applets. Это будет проще сделать со стандартным настольным приложением. запущен с использованием Java Web Start. Среда безопасности будет одинаковой, но бесплатное приложение. is:

  1. Лучшее впечатление от конечного пользователя.
  2. Намного проще кодировать и поддерживать, чем апплет, встроенный в веб-страницу.
Смежные вопросы