MySQL和JApplet(是另一个)

时间:2011-06-14 10:09:08

标签: java mysql applet

在我开始之前,我想提一下,我已经彻底研究过这个问题,并且尚未找到一个对我有用的解决方案(2-3天的研究)。

目前正在使用: WAMPServer版本2.1(禁用Apache服务)
Eclipse-jee x64
javac 1.6.0_22
Windows 7 x64

小程序,网页和数据库都驻留在我的本地计算机上。

首先,我的applet在Eclipse IDE中没有问题,但是当我尝试使用以下脚本将其作为applet.html运行时,我不断收到以下错误:

<applet code="GUI.class"
    name="Some name goes here"
    archive="APTracker.jar"
    width="1000" height="700">
    Your browser is not Java enabled.
</applet>
  1. 我使用Eclipse IDE导出了我的类文件,该IDE已将清单包含在appletJar.jar中。
  2. Eclipse导出的Jar不包含mysql-connector库
  3. 组装我的类文件后,我手动从mysql-connector jar中提取了comorg文件, 将它们输入我的appletJar.jar
  4. 在此之后,我签署了我的applet jar(并确认已签名),密钥将在6个月后到期。
  5. 完成这些步骤后,我仍然会收到如下所示的错误消息。

    我尝试用127.0.0.1替换localhost,但是没有用。我也尝试过放置mysql-connector.jar 在jre,jdk和root类文件中没有显示任何变化。

        private final String DRIVER = "com.mysql.jdbc.Driver";
        private final String DATABASE_URL = "jdbc:mysql://localhost:3306/javadb";
        private final String USERNAME = "xxxxxx";
        private final String PASSWORD = "xxxxxx";
    
        private Connection connection = null;
        private PreparedStatement selectAllAirports = null;
    
        private ResultSet resultSet;
        private ResultSetMetaData metaData;
    
        /* Establish PreparedStatements */
        public ResultSetTableModel()
        {
            try
            {   
                //establish connection to database
                connection = DriverManager.getConnection(DATABASE_URL, USERNAME, PASSWORD);
    
                //load driver class
                Class.forName( DRIVER );
    
                //create prepared statements
                selectAllAirports = connection.prepareStatement( "SELECT asciiname, latitude, longitude, elevation, timezone, country_code FROM geoname;" );
            }
            catch ( SQLException sqlException )
            {
                sqlException.printStackTrace();
                //System.exit(1);
            }
            catch ( ClassNotFoundException classNotFound )
            {
                System.out.println("ClassNotFoundException triggered.");
                classNotFound.printStackTrace();
            }
        }
    

    这是我收到的错误消息:

    C:\Users\Mr.\Desktop\Applet>appletviewer applet.html
    java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/javadb
            at java.sql.DriverManager.getConnection(DriverManager.java:602)
            at java.sql.DriverManager.getConnection(DriverManager.java:185)
            at ResultSetTableModel.(ResultSetTableModel.java:38)
            at GUI.(GUI.java:20)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
            at java.lang.Class.newInstance0(Class.java:355)
            at java.lang.Class.newInstance(Class.java:308)
            at sun.applet.AppletPanel.createApplet(AppletPanel.java:785)
            at sun.applet.AppletPanel.runLoader(AppletPanel.java:714)
            at sun.applet.AppletPanel.run(AppletPanel.java:368)
            at java.lang.Thread.run(Thread.java:662)
    java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
            at java.util.Vector.elementAt(Vector.java:427)
            at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277)
            at GUI.init(GUI.java:60)
            at sun.applet.AppletPanel.run(AppletPanel.java:424)
            at java.lang.Thread.run(Thread.java:662)
    

4 个答案:

答案 0 :(得分:3)

请注意,最近的JDBC驱动程序不需要Class.forName()调用,如果支持服务加载程序方法。

当前的Connector / J版本 支持,只包含JDBC驱动程序的orgcom目录“打破了“它:服务加载器机制依赖于META-INF目录下的文件。

因此,使用您的设置,确实需要Class.forName()电话。但是在你的代码中代码是之后尝试获取连接,这将无济于事。

其中一个:

  • 将相关服务文件从JDBC驱动程序(在META-INF/services下)添加到您的jar文件中(并删除不必要的Class.forName()调用)或
  • Class.forName()电话之前拨打DriverManager.getConnection()电话

答案 1 :(得分:1)

为什么不在MySQL applass的类路径中包含MySQL jar,而不是试图手动将MySQL类文件放入APTracker.jar中?

我怀疑你需要的MySQL jar文件的META-INF目录中有一些东西 - 一个ServiceLoader配置文件或者其他一些文件。

答案 2 :(得分:1)

需要考虑的事项是:

  1. 您的机器中是否有mysql-connector-java-5.1.10.jar或任何相关连接器?如果没有,请在谷歌中询问吗?
  2. 如果有,请将连接器粘贴到C:\Program Files\Java\jdk...\jre\lib\ext目录。
  3. 将存档上的小程序标记编辑为archive = APTracker.jar, mysql-connector-java-5.1.10.jar
  4. 再次将mysql-connector-java-5.1.10.jar粘贴到.html,.class等文件所在的位置。

答案 3 :(得分:0)

我猜想缺少MySQL JDBC jar。

您可以从http://www.mysql.com/downloads/connector/j/

下载该jar