2016-09-27 17 views
0

maven webappにsqlserver42.jarを追加しようとしています。クラスはMaven Webアプリケーションのjarファイルからロードされません

私は、マイクロソフトのWebサイトからsqljdbc42.jarをダウンロードし、私は、次のコマンドを実行し、ここで

Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0

を与えられたプロセスに従いました。

mvn install:install-file -Dfile=sqljdbc42.jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc42 -Dversion=4.2.0 -Dpackaging=jar 

それは私のローカルリポジトリにjarファイルを追加し、私はすでにプロパティで「sqljdbc.version」に値を与え、それ私のプロジェクトのpom.xmlに以下の

<dependency> 
    <groupId>com.microsoft.sqlserver.jdbc</groupId> 
    <artifactId>sqljdbc</artifactId> 
    <version>${sqljdbc.version}</version> 
</dependency> 

を含ま適切な値に解決されました。 mavenプロジェクトを更新し、 "mvn clean install"を実行した後、私はプロジェクトのmaven依存関係のjarファイル(Eclipse内)を見ることができました。

今、私は、Webアプリケーションを実行しようとすると、その瓶からドライバクラスを選択することができず、私は次の例外をのgettinています:

ます。java.sql.SQLException:見つかりませんでした、適切なドライバjdbc:sqlserver://datawh.database.windows.net:1433; database = datawh; user = username @ datawh; password = password; encrypt = true; trustServerCertificate = false; hostNameInCertificate = .database.windows.net; loginTimeout = 30 at java.sql.DriverManager.getConnection(DriverManager.java:689) at java.sql.DriverManager.getConnection(DriverManager.java:270) at com.sprt.rest.dao.AccidentDAOImpl.li stAllAccidents com.sprt.rest.controller.AccidentController.listAllAccidentsでcom.sprt.rest.service.AccidentServiceImpl.listAllAccidentsで(AccidentDAOImpl.java:184) (AccidentServiceImpl.java:34) (AccidentController.java:43) でsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) でsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) ...... *

私は自分のアプリケーションのために生成されたwarファイルをチェックし、私はまた、WEB-INF/libの下sqljdbc42-4.2.0瓶が

利用可能であることに気づきました

私はローカルリポジトリ内のjarファイルをmavenのない別の単純なJavaアプリケーションで使用し、ドライバクラスを選択することができました。私のMaven Webアプリケーションで何が間違っていますか?

私のwebappsには、私はデータベース

JDBCに接続するために使用しています

<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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.b2b.rest</groupId> 
    <artifactId>b2b-restapi</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>b2b-restapi Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <java-version>1.8</java-version> 
     <springframework.version>4.3.1.RELEASE</springframework.version> 
     <jackson.version>2.7.5</jackson.version> 
     <servlet.version>3.1.0</servlet.version> 
     <log4j.version>1.2.17</log4j.version> 
     <hibernate.version>4.2.0.Final</hibernate.version> 
     <springfox.version>2.5.0</springfox.version> 
     <sqljdbc.version>4.2.0</sqljdbc.version> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${springframework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>${jackson.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>${servlet.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>${log4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>io.springfox</groupId> 
      <artifactId>springfox-swagger2</artifactId> 
      <version>${springfox.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>com.microsoft.sqlserver</groupId> 
      <artifactId>sqljdbc42</artifactId> 
      <version>${sqljdbc.version}</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>b2b-restapi</finalName> 
     <pluginManagement> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.tomcat.maven</groupId> 
        <artifactId>tomcat8-maven-plugin</artifactId> 
        <version>2.2</version> 
       </plugin> 
       <plugin> 
        <artifactId>maven-war-plugin</artifactId> 
        <version>2.6</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
         <failOnMissingWebXml>false</failOnMissingWebXml> 
        </configuration> 
       </plugin> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.3</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</project> 

接続文字列のpom.xml:のSQLServer://datawh.database.windows.net:1433;データベース= datawhを; user = username @ datawh; password = password; encrypt = true; trustServerCertificate = false; hostNameInCertificate = *。database.windows.net; loginTimeout = 30

私はSQLサーバーに接続しようとしていないDBが、私はMicrosoft Azure SQL Warehouseに接続しようとしています

+0

参照:http://stackoverflow.com/questions/5616898/java-sql-sqlexception-no-suitable-driver -found-for-jdbcmicrosoftsqlserverデータベースを変更する必要があります= databaseName = – DaveRlz

+0

こんにちは..ご意見ありがとうございます。私は自分のデータベースに接続するために使用している接続文字列を共有していないことに気付きました。これは今質問で更新され、SQLサーバーDBではなくAzure SQL Warehouseに接続していることに注意してください。同じjarがコアJavaアプリケーション(Mavenなし)から接続するために使用されています。 – user2123507

+0

私はAzureに精通していませんが、私はここにあります:https://msdn.microsoft.com/en-us/library/ms378422%28v=sql.110%29.aspxあなたが使用しているドライバはJava8以降です - あなたはどのバージョンを使用していますか? – DaveRlz

答えて

0

これはMavenに責任を置くのは間違っていました。 Mavenは、対応するsqljdbc42.jarをwarファイルのlibフォルダに含めました。だからそれは仕事だ。私は通常の(Mavenではない)Webアプリケーションで同じコードを複製しようとしましたが、それでも動作しませんでした。

私は、接続

にClass.forName(「com.microsoft.sqlserver.jdbc.SQLServerDriver」)を取得しようとする前に、次の文を追加しました。

コアJavaで実行されるアプリケーションの場合、「ビルドパスの設定」で外部ライブラリが追加された場合、Webアプリケーションを明示的に行う必要はありませんでした。 Webアプリケーションのように見えますが、このクラスは自動的に読み込まれません(まだ理解できません)

関連する問題