2014-09-09 10 views
1

Java 프로젝트에서 작업했습니다. 이제 끝났지 만 Java Web Start가 작동하지 않습니다. 프로그램을 컴파일하고 dist 파일을 Tomcat 서버에 넣습니다. 고객이 내 프로그램을 다운로드하고 데스크톱 응용 프로그램으로 사용하기를 원합니다.Java Web Start가 작동하지 않습니다.

Netbeans IDE에서 프로그램을 실행할 수 있지만 .jnlp 파일을 사용해 보면 오류가 발생합니다. 얼마 전까지 만해도 jnlp를 사용하여 프로그램을 실행할 수 있었지만 여하튼 오류가 발생했습니다. 실행 가능한 jar로 프로그램을 실행할 수는 있지만 Java Web Start를 필사적으로 사용해야합니다.

`Exception in thread "Abandoned connection cleanup thread" java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "setContextClassLoader") 
    at java.security.AccessControlContext.checkPermission(Unknown Source) 
    at java.security.AccessController.checkPermission(Unknown Source) 
    at java.lang.SecurityManager.checkPermission(Unknown Source) 
    at com.sun.javaws.security.JavaWebStartSecurity.checkPermission(Unknown Source) 
    at java.lang.Thread.setContextClassLoader(Unknown Source) 
    at com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:38) 
Exception in thread "AWT-EventQueue-2" java.lang.ExceptionInInitializerError 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:298) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at java.sql.DriverManager.getConnection(Unknown Source) 
    at dbo.dealSave.user(dealSave.java:364) 
    at TradeX.uyegiris.jButton1ActionPerformed(uyegiris.java:177) 
    at TradeX.uyegiris.access$100(uyegiris.java:20) 
    at TradeX.uyegiris$2.actionPerformed(uyegiris.java:81) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) 
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) 
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) 
    at java.awt.Component.processMouseEvent(Unknown Source) 
    at javax.swing.JComponent.processMouseEvent(Unknown Source) 
    at java.awt.Component.processEvent(Unknown Source) 
    at java.awt.Container.processEvent(Unknown Source) 
    at java.awt.Component.dispatchEventImpl(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) 
    at java.awt.Container.dispatchEventImpl(Unknown Source) 
    at java.awt.Window.dispatchEventImpl(Unknown Source) 
    at java.awt.Component.dispatchEvent(Unknown Source) 
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
    at java.awt.EventQueue.access$400(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 com.sun.javaws.security.JavaWebStartSecurity.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) 
    ... 43 more 
` 

아래는 jnlp 파일입니다. 죄송합니다. 너무 오래되었습니다. 추가 정보를 제공 할 수 있습니다.

`<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<jnlp codebase="http://192.168.0.162:9999/" href="launch.jnlp" spec="1.0+"> 
    <information> 
     <title>Unit Elektrik Trader Team</title> 
     <vendor>seckin.celik</vendor> 
     <homepage href=""/> 
     <description>Versiyon 1</description> 
     <description kind="short">Unit Elektrik Trader Team</description> 
    <offline-allowed/> 
</information> 
    <update check="background"/> 
    <resources> 
     <j2se version="1.7+"/> 
     <jar href="Trade.jar" main="true"/> 
    <jar href="lib/jxl.jar"/> 
<jar href="lib/swingx-all-1.6.4.jar"/> 
<jar href="lib/mysql-connector-java-5.1.23-bin.jar"/> 
<jar href="lib/AbsoluteLayout.jar"/> 
<jar href="lib/beansbinding-1.2.1.jar"/> 
<jar href="lib/antlr-2.7.6.jar"/> 
<jar href="lib/cglib-2.2.jar"/> 
<jar href="lib/commons-collections-3.1.jar"/> 
<jar href="lib/dom4j-1.6.1.jar"/> 
<jar href="lib/jta-1.1.jar"/> 
<jar href="lib/hibernate-core-3.6.10.Final.jar"/> 
<jar href="lib/hibernate-commons-annotations-3.2.0.Final.jar"/> 
<jar href="lib/hibernate-entitymanager-3.6.10.Final.jar"/> 
<jar href="lib/hibernate-tools-3.6.0.CR1.jar"/> 
<jar href="lib/javassist-3.12.0.GA.jar"/> 
<jar href="lib/c3p0-0.9.1.jar"/> 
<jar href="lib/oscache-2.1.jar"/> 
<jar href="lib/slf4j-api-1.6.1.jar"/> 
<jar href="lib/slf4j-simple-1.6.1.jar"/> 
<jar href="lib/hibernate-jpa-2.0-api-1.0.1.Final.jar"/> 
<jar href="lib/dom4j-1.6.1.jar"/> 
<jar href="lib/antlr-2.7.6.jar"/> 
<jar href="lib/cglib-2.2.jar"/> 
<jar href="lib/commons-collections-3.1.jar"/> 
<jar href="lib/jta-1.1.jar"/> 
<jar href="lib/hibernate-core-3.6.10.Final.jar"/> 
<jar href="lib/hibernate-commons-annotations-3.2.0.Final.jar"/> 
<jar href="lib/hibernate-entitymanager-3.6.10.Final.jar"/> 
<jar href="lib/hibernate-tools-3.6.0.CR1.jar"/> 
<jar href="lib/javassist-3.12.0.GA.jar"/> 
<jar href="lib/c3p0-0.9.1.jar"/> 
<jar href="lib/oscache-2.1.jar"/> 
<jar href="lib/slf4j-api-1.6.1.jar"/> 
<jar href="lib/slf4j-simple-1.6.1.jar"/> 
<jar href="lib/jaxb-impl.jar"/> 
<jar href="lib/jaxb-xjc.jar"/> 
<jar href="lib/FastInfoset.jar"/> 
<jar href="lib/gmbal-api-only.jar"/> 
<jar href="lib/ha-api.jar"/> 
<jar href="lib/javax.mail_1.4.jar"/> 
<jar href="lib/jaxws-rt.jar"/> 
<jar href="lib/jaxws-tools.jar"/> 
<jar href="lib/management-api.jar"/> 
<jar href="lib/mimepull.jar"/> 
<jar href="lib/policy.jar"/> 
<jar href="lib/saaj-impl.jar"/> 
<jar href="lib/stax-ex.jar"/> 
<jar href="lib/stax2-api.jar"/> 
<jar href="lib/streambuffer.jar"/> 
<jar href="lib/woodstox-core-asl.jar"/> 
<jar href="lib/jaxws-api.jar"/> 
<jar href="lib/jsr181-api.jar"/> 
<jar href="lib/javax.annotation.jar"/> 
<jar href="lib/saaj-api.jar"/> 
<jar href="lib/activation.jar"/> 
<jar href="lib/jaxb-api.jar"/> 
<jar href="lib/jsr173_1.0_api.jar"/> 
</resources> 
    <application-desc main-class="TradeX.uyegiris"> 
    </application-desc> 
</jnlp>` 

답변

2

오류가 지적하므로 사용 권한에 문제가 있습니다.
는 (: java.security.AccessControlException :에 의한 액세스 ("java.util.PropertyPermission에" "하여 file.encoding" "읽기")를 거부)

는 또한, 당신은 보안 귀하의 JNLP에 태그 지정 누락 :

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="http://localhost:8585/" href="Test.jnlp"> 
    <information> 
     <title>Jnlp Test</title> 
     <vendor>Test</vendor> 
     <homepage href="http://localhost:8585/" /> 
     <description>Test</description> 
    </information> 
    <security> 
     <all-permissions/> <!-- SEE HERE FOR EXAMPLE --!> 
    </security> 
    <resources> 
     <j2se version="1.6+" /> 
     <jar href="TestJnlp.jar" /> 
    </resources> 
    <application-desc main-class="com.test.TestJnlp" /> 
</jnlp> 

중요 편집 : 자바 7u51의로
는 보안에 약간의 변화가 있습니다!
당신은 다음과 같은 체크 할 수있다 :
https://blogs.oracle.com/java-platform-group/entry/new_security_requirements_for_rias

Persmission-정보는 META-INF/MANIFEST.MF에 추가해야합니다!

+0

보안 태그를 추가하려고했습니다. 그것은 예외가 발생합니다 태그를 추가 한 후에도 예외가 발생했습니다. 스레드에서 예외가 발생했습니다. "연결 취소 된 버닝 스레드"java.security.AccessControlException : 액세스가 거부되었습니다 ("java.lang.RuntimePermission" "setContextClassLoader") 스레드 "AWT-EventQueue-2" java.lang.ExceptionInInitializerError 에 의해 발생 : java.security.AccessControlException : 액세스가 거부되었습니다 ("java.util.PropertyPermission" "file.encoding" "read") –

+0

* 업데이트 된 * JNLP를 게시 할 수 있습니까? 당신이 "나는 보안 태그를 추가하려고했다"라고 썼기 때문에. 하지만 단 하나의 ** 태그 (닫는 태그 포함) – Ben

+0

내 게시물을 편집 ... – Ben

0

기본적으로 Java 웹 시작 응용 프로그램은 애플릿과 같은 샌드 박스에서 실행됩니다. 이 오류는 file.encoding 시스템 속성을 읽을 수있는 권한이 없음으로 인한 것 같습니다. jnlp에 애플리케이션에 필요한 권한 수준을 정의해야합니다. 다음 요소를 추가하면 권한 문제가 해결됩니다.

<security> 
    <all-permissions/> 
</security>