Java 无法识别mysql驱动程序jar

Java 无法识别mysql驱动程序jar,java,mysql,jdbc,driver,Java,Mysql,Jdbc,Driver,我在jar文件中有一个令牌类文件。令牌类文件是使用jdbc从数据库检索数据的类。然而,当我调用jar文件时,它似乎没有重新编码外部mysql驱动程序jar文件 <mkdir dir="build/server/dist"/> <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes"> <manifest>

我在jar文件中有一个令牌类文件。令牌类文件是使用jdbc从数据库检索数据的类。然而,当我调用jar文件时,它似乎没有重新编码外部mysql驱动程序jar文件

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>
错误指向这一行 类。forName(驱动程序)

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>
我在ant构建文件中引用了mysql驱动程序,以及我能想到的每个类路径

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>

什么都没用?任何帮助都将不胜感激

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>
谢谢

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>
java.lang.ClassNotFoundException:mysql 在java.net.URLClassLoader$1.run(URLClassLoader.java:200) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:188) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:316) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:288) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:251) 位于java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374) 位于java.lang.Class.forName0(本机方法) 位于java.lang.Class.forName(Class.java:169) 位于socksviahttp.server.token.getConnection(token.java:58) 位于socksviahttp.server.token.exists(token.java:75) 位于socksviahttp.server.ServletSocks.doPost(ServletSocks.java:328) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:760) 位于javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
在jhttpserver.JHttpServerThread.run(JHttpServerThread.java:217)

运行jar文件时,双击它或从命令行):

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>
然后在jar所在的目录中,应该有一个包含所需jar的lib文件夹。是这样吗

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>

更新:从错误报告中可以看出,您正在使用URLClassLoader加载mysql类。在类路径中添加jar文件不会有帮助,您需要通过URL链接使该类可用。

注册mysql驱动程序的行大致如下:

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>
Class.forname("com.mysql.jdbc.Driver");
类加载器错误似乎是针对未经修饰的“mysql”类,而不是由包引用的类。通常,只有在动态加载类而不指定完整类名时,才会看到此错误

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>
您使用什么来加载mysql驱动程序类?如果是spring配置文件,那么配置文件中可能没有完整的类名

    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>

我注意到小写的“类路径”。它应该是“类路径”

mysql连接器jar位于build/server/dist/lib中,并使用java-jar VNCOverHTTPServer.jar调用它,否则将找不到库是的,jar文件在它们的目录中,但仍然无法识别如何通过URL链接使该类可供使用?为什么首先要使用URLClassLoader?这很复杂,只适用于特殊情况。如果你是通过一个库来实现的,请查阅它的文档。是的,你写的时候,我有一个database.properties文件,在这个文件中有两个版本,通用的版本在所有字段中都有“mysql”的值。结案
    <mkdir dir="build/server/dist"/>
    <jar destfile="build/server/dist/VNCOverHTTPServer.jar" basedir="build/server/classes">
        <manifest>
            <attribute name="Main-Class" value="jhttpserver.JHttpServer"/>
            <attribute name="Class-path" value="lib/servlet.jar lib/mysql-connector-java-5.1.7-bin.jar config/"/>
        </manifest>
    </jar>