गुम कलाकृतियाँ com.microsoft.sqlserver: sqljdbc4: jar: 4.0


103

मैं अपनी POM.xml फ़ाइल में MS SQL ड्राइवर निर्भरता को जोड़ने का प्रयास कर रहा हूं और निम्नलिखित निर्भरता है।

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>

लेकिन मुझे यह अपवाद है

गुम कलाकृतियाँ com.microsoft.sqlserver: sqljdbc4: jar: 4.0

मैं वास्तव में इस मुद्दे को नहीं समझता।

जवाबों:


160

अपडेट करें

Microsoft अब मावेन सेंट्रल में इस कलाकृति को प्रदान करता है। अधिक जानकारी के लिए @ निर्मल का उत्तर देखें: https://stackoverflow.com/a/41149866/1570834


मूल ANSWER

मुद्दा यह है कि मावेन किसी भी कॉन्फ़िगर मावेन रिपॉजिटरी में इस कलाकृति को नहीं ढूंढ सकता है

दुर्भाग्य से Microsoft इस कलाकृति को किसी भी मावेन भंडार के माध्यम से उपलब्ध नहीं कराता है। आपको Microsoft वेबसाइट से जार डाउनलोड करने की आवश्यकता है , और फिर इसे अपने स्थानीय मैवेन रिपॉजिटरी में मैन्युअल रूप से इंस्टॉल करें।

आप निम्न मावेन कमांड के साथ ऐसा कर सकते हैं:

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

फिर अगली बार जब आप अपने पोम पर मावेन चलाते हैं तो यह कलाकृतियों को ढूंढ लेगा।


जवाब के लिए धन्यवाद, लेकिन मुझे यह तब मिलता है जब मैं कमांड [ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4 :install-file (default-cli) on project standalone-pom: The specified file 'C:\Us ers\anthony\sqljdbc4.jar' not exists -> [Help 1]
चलाता हूं

3
सुनिश्चित करें कि sqljdbc4.jar निर्देशिका में वह स्थान है जहां आप कमांड चला रहे हैं, अन्यथा स्पष्ट रूप से पूर्ण पथ प्रदान करें।
सर्गेई मकरोव

2
@ एंटनी, जैसा कि सर्गेई कहता है, आपको या तो उसी स्थान से मावेन कमांड चलाने की जरूरत है (जैसा कि मेरे जवाब में दिया गया है) उसी स्थान से जहां आपने sqljdbc4.jar डाउनलोड किया हो या -Dfile=C:\Users\anthony\Downloads\sqljdbc4.jarउदाहरण के लिए फ़ाइल को पूरा रास्ता प्रदान करना हो ।
DB5

@ DB5 के रूप में sqljdbc4.jar स्थापित करने के बाद, यह अभी भी मुझे एक ही त्रुटि देता है जब मैं अपने प्रोजेक्ट में mvan पैकेज चलाता हूं, उस पर कोई विचार? यह वास्तव में कहाँ स्थापित होता है? क्या मैं मवन से स्थानीय रूप से स्थापित जार की सूची देख सकता हूं?
पी-राड

5
देख मेरा उत्तर maven केंद्रीय करने के लिए नीचे दिए गए, इस JDBC ड्राइवर माइक्रोसॉफ्ट (नवंबर 2016 के रूप में) जोड़ा
निर्मल

73

Microsoft ने हाल ही में अपने jdbc ड्राइवर को खोला है

अब आप मावेन केंद्रीय पर चालक पा सकते हैं:

<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

या जावा 7 के लिए:

<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre7</version>
</dependency>

मैंने घंटों तक यह काम करने की कोशिश की है और पता चला है कि संस्करण does.३.१ मेरे लिए this.०.० संस्करण के अनुसार ड्राइवर के लिए लोड नहीं करता है। क्या आप जानते हैं कि ऐसा क्यों हो सकता है?
आर्किमिडी

27

मुझे इसी तरह की समस्या थी और इसे निम्नलिखित करके हल किया।

  • Microsoft वेबसाइट से sqljdbc4.jar को अपनी स्थानीय मशीन पर डाउनलोड करें।
  • प्रोजेक्ट पर राइट क्लिक करें -> इम्पोर्ट -> मावेन -> मावेन रिपॉजिटरी में एक कलाकृति स्थापित करें या तैनात करें जैसा कि नीचे दिखाया गया है।

यहां छवि विवरण दर्ज करें

* अगला>>

Artifact file: आपके द्वारा डाउनलोड किए गए जार के निम्नलिखित विवरण पथ को भरें (उदाहरण: E: \ lib \ sqljdbc4.jar मेरे मामले में)
Group Id:com.microsoft.sqlserver
Artifact Id:sqljdbc4
Version:4.0

यहां छवि विवरण दर्ज करें

  • फिर प्रोजेक्ट को रिफ्रेश / क्लीन करें।

    धन्यवाद!

1
अभी भी मुझे यह मुद्दा मिल रहा है
R.Anandan

1
बहुत बढ़िया!!! लेकिन मुझे प्रोजेक्ट के माध्यम से प्रोजेक्ट को रिफ्रेश करना था -> राइट क्लिक -> मावेन -> अपडेट प्रोजेक्ट ...
संजीव धीमान

11

उपरोक्त जवाब केवल sqljdbc4.jar को स्थानीय रिपॉजिटरी में जोड़ता है। परिणामस्वरूप, वितरण के लिए अंतिम प्रोजेक्ट जार बनाते समय sqljdbc4 फिर से गायब हो जाएगा जैसा कि रनटाइम त्रुटि के संबंध में @ टिप्पणी द्वारा इंगित किया गया था।

Microsoft (और Oracle और अन्य तृतीय पक्ष प्रदाता) ENU / EULA के अनुसार अपने सॉफ़्टवेयर के वितरण को प्रतिबंधित करते हैं। इसलिए उन सॉफ्टवेयर मॉड्यूल को वितरण के लिए मावेन उत्पादित जार में नहीं मिलाया जाता है। इसे प्राप्त करने के लिए हैक होते हैं (जैसे कि रनटाइम के दौरान थ्री पार्टी जार फ़ाइल का स्थान प्रदान करना), लेकिन एक डेवलपर के रूप में आपको लाइसेंस का उल्लंघन करने के बारे में सावधान रहना चाहिए।

Jdbc कनेक्टर्स / ड्राइवरों के लिए एक बेहतर तरीका jTDS का उपयोग करना है , जो कि अधिकांश DBMS के अनुकूल है, अधिक विश्वसनीय, तेज (बेंचमार्क के अनुसार), और GNU लाइसेंस के तहत वितरित किया जाता है। ऊपर के किसी भी अन्य तकनीकों के बाद चौकोर खूंटी को गोल छेद में डालने की कोशिश करने से आपके जीवन को इसका उपयोग करना बहुत आसान हो जाएगा।


ओह मैन jtds ने मेरा दिन बचाया, कॉन्क्लेव के साथ sqljdbc4 को कॉन्फ़िगर करना कुछ दर्द है एक * s
norbertas.gaulia

केवल एक चीज यह है कि jTDS Microsoft के ड्राइवर के समान कार्यक्षमता का समर्थन नहीं करता है। उदाहरण के लिए, बैच अपडेट।
lpacheco

1
यह दुर्भाग्यपूर्ण है कि jTDS डेटाटाइम 2 डेटा प्रकार का समर्थन नहीं करता है। लगता है कि मेरी पसंद मेरी डेटाइम 2-टू-जावा-डेट विधि को रोल करना है, या बहुत सारे हुप्स के माध्यम से जाना, जिससे Microsoft ड्राइवर काम कर रहा है।
जकर

2017 तक, ड्राइवर को JDBC4 में अपडेट नहीं किया गया है और यह बहुत अधिक मृत है, HikariCP और अधिक आधुनिक कॉन पूल के साथ काम नहीं करता है।
अल्फ्रावो

11

आप एक प्रोजेक्ट रिपॉजिटरी भी बना सकते हैं। यह उपयोगी है यदि अधिक डेवलपर्स एक ही परियोजना पर काम कर रहे हैं, और पुस्तकालय को परियोजना में शामिल किया जाना चाहिए।

  • सबसे पहले, अपने प्रोजेक्ट के लिबास डायरेक्टरी में रिपॉजिटरी स्ट्रक्चर बनाएं और फिर उसमें लाइब्रेरी को कॉपी करें। पुस्तकालय का नाम-प्रारूप निम्नलिखित होना चाहिए:<artifactId>-<version>.jar

    <your_project_dir>/lib/com/microsoft/sqlserver/<artifactId>/<version>/

  • लायब्रेरी फ़ाइल के आगे pom फ़ाइल बनाएँ, और उसमें निम्न जानकारी डालें:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <modelVersion>4.2.0</modelVersion>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.2</version>
    </project>
  • इस बिंदु पर, आपके पास यह निर्देशिका संरचना होनी चाहिए:

    <your_project_dir>/lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.jar <your_project_dir>/lib/com/microsoft/sqlserver/sqljdbc4/4.2/sqljdbc4-4.2.pom

  • अपनी परियोजना की pom फ़ाइल पर जाएँ और नया भंडार जोड़ें:

    <repositories>
        <repository>
            <id>Project repository</id>
            <url>file://${basedir}/lib</url>
        </repository>
    </repositories>
  • अंत में, पुस्तकालय पर निर्भरता जोड़ें:

    <dependencies>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>4.2</version>
        </dependency>
    </dependencies>

अपडेट 4.3.2017

ऐसा लगता है कि पुस्तकालय सार्वजनिक रूप से उपलब्ध भंडार से प्राप्त किया जा सकता है। @ अधिक जानकारी के लिए निर्मल और जेसेक ग्रैजलज़ेक के उत्तर।


यह स्वीकृत उत्तर होना चाहिए, IMHO। बाइनरी को गिट रिपॉजिटरी में डालने के बावजूद, यह एक आग और भूल समाधान है। प्रत्येक डेवलपर को स्थानीय रिपॉजिटरी (या मदद के लिए StackOverflow खोज) के लिए ड्राइवर को कैसे तैनात किया जाए, इस पर आगे निर्देश की कोई आवश्यकता नहीं है।
lpacheco

@ इपचेको सही है, यह वास्तव में स्वीकृत उत्तर होना चाहिए।
rjdamore


1

अगर आपको कुछ समस्या हो रही है, जब https://stackoverflow.com/a/41149866/1570834 में @nirmals जवाब से 6.1.0.jre7 के लिए निर्भरता शामिल है , कॉमन्स-कोडेक / azure-keyvault के साथ अपने पोम में मैं इसके साथ जाना पसंद करता हूं :

    <dependency>
       <groupId>com.microsoft.sqlserver</groupId>
       <artifactId>mssql-jdbc</artifactId>
       <version>6.2.2.jre7</version>                
    </dependency>

0

यह बहुत कठिन नहीं है। मैंने अभी तक लाइसेंस नहीं पढ़ा है। हालाँकि मैंने यह काम सिद्ध किया है। आप sqljdbc4 जार फ़ाइल को नेटवर्क साझा या स्थानीय निर्देशिका में कॉपी कर सकते हैं। आपका build.gradle इस तरह दिखना चाहिए:

apply plugin: 'java'
//apply plugin: 'maven'
//apply plugin: 'enhance'

sourceCompatibility = 1.8
version = '1.0'

//library versions
def hibernateVersion='4.3.10.Final'
def microsoftSQLServerJDBCLibVersion='4.0'
def springVersion='2.5.6'

def log4jVersion='1.2.16'
def jbossejbapiVersion='3.0.0.GA'

repositories {
    mavenCentral()
    maven{url "file://Sharedir/releases"}
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile "org.hibernate:hibernate-core:$hibernateVersion"
    compile "com.microsoft.sqlserver:sqljdbc4:$microsoftSQLServerJDBCLibVersion"
}

task showMeCache << {
    configurations.compile.each { println it }
}

साझाकरण / रिलीज़ निर्देशिका के तहत, मेरे पास मावेन संरचना के समान निर्देशिका है, जो कि \ साझा / रिलीज़ \ com \ microsoft \ sqlserver \ sqljdbc4 \ 4.0 \ sqljdbc4-4.0.jar है।

सौभाग्य।

डेविड येन


0

स्व-युक्त मावेन परियोजना के लिए मैं आमतौर पर परियोजना के भंडार में सभी बाहरी जार निर्भरताएं स्थापित करता हूं। SQL सर्वर JDBC ड्राइवर के लिए आप कर सकते हैं:

  • https://www.microsoft.com/en-us/download/confirmation.aspx?id=11774 से JDBC ड्राइवर डाउनलोड करें
  • local-repoअपने Maven प्रोजेक्ट में फ़ोल्डर बनाएँ
  • फ़ोल्डर sqljdbc42.jarमें अस्थायी प्रतिलिपिlocal-repo
  • में local-repoफ़ोल्डर रन mvn deploy:deploy-file -Dfile=sqljdbc42.jar -DartifactId=sqljdbc42 -DgroupId=com.microsoft.sqlserver -DgeneratePom=true -Dpackaging=jar -Dversion=6.0.7507.100 -Durl=file://.स्थानीय भंडार में तैनाती जार करने के लिए (एससीएम में अपने कोड के साथ एक साथ संग्रहीत)
  • sqljdbc42.jar और डाउनलोड की गई फ़ाइलों को हटाया जा सकता है
  • pom.xmlप्रोजेक्ट के स्थानीय रिपॉजिटरी में अपने को संशोधित करें और संदर्भ जोड़ें: xml <repositories> <repository> <id>parent-local-repository</id> <name>Parent Local repository</name> <layout>default</layout> <url>file://${basedir}/local-repo</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> अब आप बिना किसी अतिरिक्त कॉन्फ़िगरेशन या इंस्टॉलेशन के हर जगह अपना प्रोजेक्ट चला सकते हैं।

0

आप किसी अन्य ड्राइवर का उपयोग कर सकते हैं

<dependency>
    <groupId>net.sourceforge.jtds</groupId>
    <artifactId>jtds</artifactId>
    <version>1.3.1</version>
</dependency>

और xml में

<bean id="idNameDb" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
        <property name="url" value="jdbc:jtds:sqlserver://[ip]:1433;DatabaseName=[name]" />
        <property name="username" value="user" />
        <property name="password" value="password" />
</bean>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.