我有2 maven项目在我的Eclipse(v4.7.0)工作区。
第一个项目包含一些实用工具,并通过JDBC驱动程序保持与MySQL数据库的连接。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>dbtools</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>DBTools</name>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- JDBC for MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
</dependencies>
</project>
第一个项目是作为jar构建的,它作为maven依赖项包含在第二个项目(包含主应用程序)中,如pom所示。xml如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>mainapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>MainApp</name>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<jersey2.version>2.25.1</jersey2.version>
<jaxrs.version>2.0.1</jaxrs.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.6.1</version>
<configuration>
<filesets>
<fileset>
<directory>C:/apps/tomcat/webapps/mainapp</directory>
<includes>
<include>**</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-appCtx</id>
<phase>generate-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>C:/apps/tomcat/webapps/</outputDirectory>
<overwrite>true</overwrite>
<resources>
<resource>
<directory>../mainapp/target</directory>
<includes>
<include>mainapp-0.0.1-SNAPSHOT.war</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- JAX-RS -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>${jaxrs.version}</version>
</dependency>
<!-- Jersey 2.25.1 -->
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>${jersey2.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey2.version}</version>
</dependency>
<!-- Local DBTool -->
<dependency>
<groupId>com.example</groupId>
<artifactId>dbtools</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
作为主要应用程序的第二个项目作为war文件部署。当我启动Tomcat(第二款应用的war)时,我在运行时遇到了一个SQLException:
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/mydb?autoReconnect=true&useSSL=false
at java.sql.DriverManager.getConnection(DriverManager.java:689)
我在StackOverflow中读到了几个关于这个异常的问题,但我仍然没有找到有效的解决方案:(
在Tomcat安装文件夹的lib文件夹中,我放置了mysql-connector-java-6.0.6。罐子
我还注意到,在第一个项目的JAR文件中(将其作为存档打开),没有JDBC连接器。这正常吗?
在第一个项目中,我这样连接:
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/torre?autoReconnect=true&useSSL=false", "dbuser", "dbpass");
conn有java类型。sql。联系
我也试着把:
Class.forName("com.mysql.jdbc.Driver");
在che“conn=…”之前但我得到了同样的结果:(
我使用Tomcat 8.5和JDK 1.8。
有没有办法解决这个问题?我是否在Maven或Eclipse构建配置中遗漏了什么?
提前感谢您的帮助!:)
根据我的理解提供意见
你提到过
我还注意到,在第一个项目的JAR文件中(将其作为存档打开),没有JDBC连接器。这正常吗?
当你在构建jar而不是war时,你不会找到依赖项[只有一个jar没有maven shade插件,它不会有依赖项]
所以使用maven-shaded-pluginhttps://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>com.yourpackage.YourClass</Main-Class>
<X-Compile-Source-JDK>${maven.compile.source}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${maven.compile.target}</X-Compile-Target-JDK>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
在你的pom里。xml[用于生成jar的project-1的]
现在,如果你看到在maven构建之后,你将有两个jar(一个是原始的,另一个是pom中具有依赖项的jar)
如果你提取一个更大的(有依赖项的)你可以在这里找到jdbc jar
现在是项目2
当您将project-1作为依赖项包含时[确保包含较大的项目,而不是较小的项目(无依赖项)],如果您在推送时使用远程存储库,较大的jar会被推送,所以当你在pom[project-1]中提到它时,较大的jar会在构建后下载一次,检查project-1 jar是否有自己的依赖项
最终建立战争并部署
资料来源:在同一种情况下工作过,看起来和我以前工作过的类似
让我知道结果【大多数情况下,它会工作,如果不是我的联系人:es12b1005@iith.ac.in会尽力帮助】
谢谢:)
首先,在这里熟悉JDBC 4.0的自动类加载。
现在,请参阅META-INF/services/java的内容。sql。驱动程序
是com.mysql。希杰。jdbc。驱动程序
。因此你得到了一个例外。
请将project 1
的mysql连接器依赖更新到下面
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
这将自动包含在project 2
thro'传递依赖的WEB-INF/lib中。因此,您不需要将其包含在tomcat lib中。
从tomcat库中卸下6.0.6
mysql连接器。
如果问题仍然存在,请在获取连接之前尝试明确注册
Class.forName("com.mysql.jdbc.Driver");
我试图编写一个连接到MySQL数据库的java程序。但是我得到了这个错误: 没有找到适合jdbc:mysql//localhost:3306/test的驱动程序 我已经安装了。我还是会犯这个错误。 这是我的程序:
问题内容: 这个问题已经在这里有了答案 : 臭名昭著的java.sql.SQLException:未找到合适的驱动程序 (13个答案) 4年前关闭。 我有一个Java类,该类通过在Tomcat上运行的JSP中使用的JDBC通过JDBC访问MySQL数据库,并且遇到“未找到驱动程序异常”的问题。 我有一个方法: 这会在“ 这是我从catalina.out的打印输出”上引发错误: 唯一重要的错误是一个
我正在尝试使用以下代码将我的JavaMaven项目(在Jetty服务器上运行)连接到Google Cloud MySQL数据库: 我已经在pom中包含了这两个依赖项。xml: 我要走了 JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://google... 我不知道该怎么办。我假设依赖项应该处理将JDBC驱动程序添加到我的类路径。
我创建了一个maven项目。 我正在尝试将MSSQL(Microsoft SQL Server 2014)与我的J2EE应用程序连接起来。但它引发了以下异常 我的代码: 网状物xml 登记 数据库连接 上下文xml
我在一个类中有这段代码,用于连接数据库。 我得到这个错误: 我检查了用户名和密码,数据库服务的连接,一切都正确。
我正在建立一个新的数据库连接,但最后出现了“java.sql.SQLException:找不到适合jdbc的驱动程序:mysql//localhost:3306/gaming_site”错误!请帮我修一下! 我使用mysql v8.0因此我添加了mysql连接器v8.0.12在java构建路径的库 建立数据库连接的代码: