Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在从eclipse导出WAR,找不到mysql驱动程序。从eclipse运行时很好_Java_Mysql_Eclipse_Jsp_Tomcat - Fatal编程技术网

Java 正在从eclipse导出WAR,找不到mysql驱动程序。从eclipse运行时很好

Java 正在从eclipse导出WAR,找不到mysql驱动程序。从eclipse运行时很好,java,mysql,eclipse,jsp,tomcat,Java,Mysql,Eclipse,Jsp,Tomcat,我是Java新手,正在努力在我的机器上运行一段代码。在eclipse内部,我能够轻松地将mysql连接器jar文件添加到WEB-INF/lib文件夹,当我从eclipse内部启动tomcat服务器时,数据库连接工作正常。但是,如果我将项目导出为WAR文件,并将其部署在本地机器上的tomcat中,那么一旦我尝试进行查询,它就会消失 它爆炸了一个空指针异常,所以我在日志文件中查看了一下,它似乎找不到驱动程序(尽管它在WEB-INF中) 我曾尝试将ubuntu上的mysql连接器复制到/usr/sha

我是Java新手,正在努力在我的机器上运行一段代码。在eclipse内部,我能够轻松地将mysql连接器jar文件添加到WEB-INF/lib文件夹,当我从eclipse内部启动tomcat服务器时,数据库连接工作正常。但是,如果我将项目导出为WAR文件,并将其部署在本地机器上的tomcat中,那么一旦我尝试进行查询,它就会消失

它爆炸了一个空指针异常,所以我在日志文件中查看了一下,它似乎找不到驱动程序(尽管它在WEB-INF中)

我曾尝试将ubuntu上的mysql连接器复制到/usr/share/java、/usr/share/tomcat7/lib和/user/share/tomcat7/bin/lib中,但没有成功

我尝试在项目设置->数据连接中手动设置驱动程序路径,但没有成功

我已经准备好了许多类似的问题,这些问题已经在人们将连接器复制到WEB-INF或tomcat/lib文件夹中时得到了解决,但在我的例子中,它什么也没有做。我对java的了解还不够,无法理解为什么它是从eclipse派生出来的,而不是作为war文件部署的


非常感谢

在创建war文件时,必须包含jar文件。右键单击项目->属性->Java构建路径->顺序和导出,选择您的JAR文件。

如果您得到类路径异常和NPE(NullPointerException)。此异常的基本原因是JAR文件丢失或库路径中存在多个JAR文件。让我们做一个基本的故障排除:

   1st: Check if your MYSQL-CONNECTOR JAR file was included in the library of WAR <WEB-INF/lib>.
   2nd: Remove other MYSQL library from tomcat lib.
   3rd: While your tomcat is running, remove the WAR project from the tomcat webapps folder and wait for a few seconds until everything is clear
   4th: Restart your tomcat
   5th: Copy your WAR file into the tomcat/webapps folder.
1st:检查您的MYSQL-CONNECTOR JAR文件是否包含在WAR库中。
第二:从tomcat库中删除其他MYSQL库。
第三:当您的tomcat运行时,从tomcat webapps文件夹中删除WAR项目,并等待几秒钟,直到一切都清楚
第四:重启你的tomcat
第五:将WAR文件复制到tomcat/webapps文件夹中。

如果只有NPE,则为另一种情况。这意味着您正在访问某个变量,而该变量为null或未初始化。当您访问属性文件时,如果名称拼写错误,也会发生这种情况。

看起来像Tomcat和捆绑DBCP,只有当驱动程序放在Tomcat的公共lib文件夹中,而不是war的WEB-INF文件夹中时,才能找到驱动程序类

我遇到了这个问题,只要它保存在我的应用程序的WEB-INF/lib中,它就不会“找到”驱动程序

一旦我将postgres驱动程序jar移动到
EclipseWorkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/lib
,它就开始正常工作了。(只要postgres驱动程序位于
eclipseworkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/wtpwebapps/MyProj/WEB-INF/lib
中,就没有检测到它。)

这里,
eclipseworkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp3/
是通过在eclipse中定义tomcat服务器运行时自动创建的tomcat根文件夹


我假设DBCP是通过引导类加载器加载的,如果它位于应用程序库文件夹/WAR中,它就无法找到驱动程序。

我已经这样做了,但没有效果。它列在web app libraries和apache libraries下,并且都在您提到的选项卡上导出。导出war并查看它是否包含驱动程序jar?确实,它位于导出war文件的web-INF文件夹中。是的,它100%位于其中。然后它应该位于
web INF/lib
文件夹下。是的,在我删除一堆东西之前,我们已经在WEB-INF/lib文件夹中建立了它:这可能是从构建路径中的多个mysql连接器中创建的吗?我把它添加到我能找到的每个包含jar文件的lib文件夹中。(找到*.jar)。我需要全部删除吗?您只需要删除mysql连接器jar文件。创建WAR文件并希望包含JAR文件时,可以将JAR文件放在WAR WEB-INF\lib文件夹中,也可以放在Tomcat\lib文件夹中,但不能同时放在两者中。当您在TC运行时将JAR文件放入Tomcat\lib时,需要重新启动它。在调用
getConnection
之前加载驱动程序,即
Class.forName(“com.mysql.jdbc.driver”)我不确定我是否因为没有弄清楚这一点而觉得自己像个白痴,或者我是否觉得eclipse提供的开发环境具有误导性。添加Class.forName(“com.mysql.jdbc.Driver”);一切都搞定了!花这么多时间在这件事上真是让我心碎,我不明白为什么从eclipse而不是从tomcat的war/webapp启动时它能工作?回答你关于eclipse的问题:当你在库中手动添加JAR文件时(属性->JAVA构建路径->库)这基本上是在不使用代码
Class.forName…
的情况下初始化了类驱动程序。当您将其导出到WAR文件时,它不包括您在库中定义的设置,因为这仅适用于您的Eclipse配置,Eclipse将按顺序打包定义的内容并导出,您需要使用
类.forName…
加载驱动程序。希望这能澄清问题。