我在jar文件中有一个令牌类文件。令牌类文件是使用jdbc从数据库中检索数据的类。但是,当我调用jar文件时,它似乎没有识别外部mysql驱动程序jar文件。
错误指向此行 的Class.forName(驾驶员);
我在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>
什么都没有用?任何帮助将不胜感激。
感谢
java.lang.ClassNotFoundException:mysql 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:188) 在java.lang.ClassLoader.loadClass(ClassLoader.java:316) at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:288) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:374) at java.lang.Class.forName0(Native Method) at 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)
答案 0 :(得分:1)
注册mysql驱动程序的行是:
Class.forname("com.mysql.jdbc.Driver");
类加载器错误似乎是一个朴素的'mysql'类,而不是包引用的类。通常,只有在动态加载类而未指定完整的类名时才会看到此错误。
你用什么来加载mysql驱动程序类?如果它是一个spring配置文件,那么你可能在配置文件中没有完整的类名。
我刚刚注意到小写的“Class-path”。它应该是'Class-Path'
答案 1 :(得分:0)
运行jar文件时,可以双击它或从命令行运行:
java -jar VNCOverHTTPServer.jar
然后在jar所在的目录中,应该有一个包含所需jar的lib文件夹。是这种情况吗?
更新:从错误报告中可以看出,您正在使用URLClassLoader加载mysql类。在类路径中添加jar文件无济于事,您需要通过URL链接使该类可用。