Jar工作:通过JNLP无法正常工作

时间:2012-02-28 00:10:44

标签: java jnlp

我创建了一个使用mysql java连接器的mysql数据库的java SE应用程序。我在ubuntu上托管了apache和mysql服务器。

我在apache服务器上有我的.jar文件,还有jnlp,

当我只是下载jar文件并运行它时,它似乎工作,但是,当我尝试通过jnlp使用它时,第一个视图出现然后当我输入我的用户名和密码并单击登录按钮它停在那里

这是我的JNLP文件

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://servername:80/" href="" >
    <information>
        <title>MyProject</title>
        <vendor>abd</vendor>
        <icon href="icon_1.jpg"/>
        <offline-allowed/>
    </information>
    <resources>
        <j2se version="1.7+" href=
           "http://java.sun.com/products/autodl/j2se"/>
        <jar href="MyJar.jar" />
    </resources>
    <application-desc
         main-class="" >
    </application-desc>
</jnlp>

请让我知道错误是什么。 在服务器上,我有80个8080和3306端口作为公共端口。

正如我所说,我可以使用从服务器下载的jar文件更新数据库,但是当我尝试通过JNLP运行文件时,我冻结了。

我在java控制台中看到了异常

线程中的异常&#34; AWT-EventQueue-0&#34; java.lang.ExceptionInInitializerError 在com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:286)     at java.sql.DriverManager.getConnection(Unknown Source)     at java.sql.DriverManager.getConnection(Unknown Source)     在MyProject.database.connect(database.java:27)

引起:java.security.AccessControlException:拒绝访问(&#34; java.util.PropertyPermission&#34;&#34; file.encoding&#34;&#34;&#34;)     在java.security.AccessControlContext.checkPermission(未知来源)

我无法弄清问题是什么?我是否需要为JNLP打开一些端口。

任何帮助表示感谢。

由于

2 个答案:

答案 0 :(得分:3)

浮现在脑海中的三件事:

  1. 您需要为javawebstart签名jar以允许访问套接字。
  2. 您显然正在尝试连接到mysql数据库,从您的描述中不清楚此数据库的位置以及是否允许与主机建立连接。
  3. 你是否在你的jar中捆绑了mydql驱动程序?或以某种方式引用?

答案 1 :(得分:1)

  

我是否需要为JNLP打开一些端口。

仅当您已将JNLP配置为使用非标准端口时。

很难远程诊断这里发生的事情。您可能需要弄清楚冻结在什么时候发生。是在JNLP应用程序下载阶段吗?虽然JVM正在加载你的类?应用初始化期间?在最后一种情况下,您能否确定应用程序冻结的位置;例如通过线程转储?


ExceptionInInitializerError例外是一个好的开始。在该堆栈跟踪中的某处应该存在另一个“原因”异常,该异常应该为您提供关于真正问题的重要线索。

(我的猜测是某些防火墙阻止了端口3360上的访问。你可以使用命令行SQL工具从客户端机器连接到数据库,还是被阻止了?

再想一想,签名问题是一个更合理的解释,特别是如果SQL工具有效的话。)


网上有很多关于如何签署JAR文件的教程。例如: