Если вы используете NetBeans 7.1, вам необходимо обновить NetBeans до последней ночной версии http://bits.netbeans.org/download/trunk/nightly/latest/.
В более ранних версиях NetBeans есть ошибка упаковки файлов jar http://netbeans.org/bugzilla/show_bug.cgi?id=205844.
Вы можете увидеть, есть ли эта ошибка в сгенерированном пакете NetBeans, разархивировав файлы jar вашего приложения и проверив, что в его файле META-INF / MANIFEST.MF есть ссылки на ваши внешние файлы jar.
Похоже на jarВы используете (такие вещи, как Toplink, jdbc и WebLogic), требуются привилегии безопасности, превышающие те, которые доступны для неподписанного приложения, поэтому вам также необходимо запросить дополнительные разрешения безопасности, как рекомендует Сергей, и подписать ваше приложение.Для этого:
- Щелкните правой кнопкой мыши свой проект в NetBeans.
- Выберите Build |Развертывание
- Проверка запроса на неограниченный доступ.
- Если у вас есть сертификат подписи от ЦС, нажмите кнопку Изменить ... рядом с сертификатом подписи, в противном случае просто примите сгенерированный самозаверяющий сертификат по умолчанию, созданный NetBeans..
Обратите внимание, что после того, как вы это сделаете, пользователи теперь будут получать поля Info и Alert, когда они будут использовать ваше приложение, потому что приложение запрашивает расширенные привилегии по сравнению с обычной веб-страницей.
В Java, если статическая инициализация класса не удалась, загрузка класса не будет завершена, даже если класс доступен и находится на пути к классам.Это означает, что первая ссылка на класс сгенерирует ExceptionInInitializerError
, а последующие ссылки на класс сгенерируют, часто вводящее в заблуждение, ClassNotFoundException
.
ExceptionInInitializerError
выбрасывается, чтобы указать, что исключение произошло во времяоценка статического инициализатора или инициализатора для статической переменной.Jar-файл, содержащий файл класса, выдавший ошибку, был найден, и загрузка класса началась, но не может быть завершена, поскольку были обнаружены ошибки в его статических переменных или конструкторе.
Подозреваемый код будет TextAttributeProp.checkLimit(TextAttributeProp.java:125)
, хотя rootпричина вашей проблемы может быть в другом месте.Проверьте, что делает статический код TextAttributeProp, и оберните методы статической инициализации в блоки try catch, чтобы получить больше информации об отладке, выполнить резервное действие или игнорировать статическую ошибку инициализации.
System.getProperties()
не вернет вассвойства, которые вы хотите в неподписанном апплете - он просто вернет ноль.Затем вы пытаетесь разыменовать это нулевое значение в статическом инициализаторе, который генерирует исключение NullPointerException и приводит к сбою загрузки вашего класса, а последующие ссылки на класс вызывают ClassNotFoundException.
Если вы напрямую получаете свойство "os.name"
черезSystem.getProperty("os.name")
вместо получения всех системных свойств, он работает, потому что "os.name"
не помечен как чувствительный к безопасности.Чтобы узнать, какие свойства вы можете и не можете запрашивать у апплета, обратитесь к: http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/properties.html. Также обратите внимание, что неподписанный апплет не может устанавливать какие-либо системные свойства.
Если ваше приложение правильно подписано,Вы должны иметь возможность получить и установить любые свойства системы, которые вы хотите.Если вы не можете сделать это, вы можете отправить сообщение об ошибке в плагин браузера JavaFX по адресу http://javafx -jira.kenai.com .Сначала проверьте, правильно ли вы подписали приложение, пытаясь сделать что-то еще, что требует повышенных привилегий, например, прочитать файл из корневой файловой системы из подписанного апплета и убедиться, что чтение не завершилось неудачей.