में डर्बी जेडीबीसी ड्राइवरों के लिए निर्भरता का दायरा मैं अपना pom.xml बनाने की कोशिश कर रहा हूं ताकि मैं 'mvn install' चलाते समय स्वचालित रूप से अपना डेटाबेस स्कीमा बना सकूं। मैं ऐसा करने के लिए "मेवेन-केयेन-प्लगइन" का उपयोग कर रहा हूं। यह प्लगइन कहा जाता है (एकीकरण-परीक्षण चरण में), क्योंकि मैं आउटपुट देख सकता हूं। लेकिन मोजो अपवाद के साथ विफल रहता है: (मैंने इसे देखने के लिए -ई और -एक्स ध्वज का उपयोग किया)।इंटरबैक्शन स्कोप (कैयेन)
java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
(मैं एक ही मिलता है अगर मैं कोशिश करते हैं और EmbeddedDriver का उपयोग करें और या नहीं, मैं अपने निर्भरता के रूप में 'derbyclient' या बस 'डर्बी' शामिल हैं)।
यहां एक pom.xml है जो समस्या को दोहराना चाहिए। मैं विंडोज़ पर एमवीएन 3 का उपयोग कर रहा हूं। [अपाचे Maven 3.0.4 (r1232337; 2012-01-17 08: 44: 56 + 0000)]
<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.mycompany</groupId>
<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-modeler-plugin</artifactId>
<version>3.2M1</version>
</plugin>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-plugin</artifactId>
<version>3.2M1</version>
<executions>
<execution>
<id>cgen</id>
<configuration>
<superPkg>com.mycompany.model.generated</superPkg>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<destDir>${project.build.sourceDirectory}</destDir>
</configuration>
<goals>
<goal>cgen</goal>
</goals>
</execution>
<execution>
<id>cdbgen</id>
<configuration>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<driver>org.apache.derby.jdbc.ClientDriver</driver>
<url>jdbc:derby:memory:tracedb;create=true</url>
<username>test</username>
</configuration>
<goals>
<goal>cdbgen</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.10.1.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
यह भी एक वैध लाल "datamap.map.xml" फ़ाइल (src/मुख्य में की आवश्यकता है/संसाधन), यहाँ एक मैंने पहले बनाया है:
<?xml version="1.0" encoding="utf-8"?>
<data-map xmlns="http://cayenne.apache.org/schema/3.0/modelMap"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://cayenne.apache.org/schema/3.0/modelMap http://cayenne.apache.org/schema/3.0/modelMap.xsd"
project-version="6">
<db-entity name="TEST">
<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
</db-entity>
</data-map>
संपादित करें:
अधिक जानकारी जोड़ना।
डर्बीक्लिएंट -1010.1.1.जर में कक्षा 'org.apache.derby.jdbc.ClientDriver' (केवल नेटबीन्स से जेएआर का विस्तार किया गया है) शामिल है।
[DEBUG] (f) classpathElements = [<PROJECT-PATH>\mvn\target\classes, <HOME-DIR>\.m2\repository\org\apache\derby\derbyclient\10.10.1.1\derbyclient-10.10.1.1.jar]
समाधान:
-X झंडा दिखाने के लिए कि CLASSPATH सही ढंग से जार संदर्भित कर रहा है लगता है काम कर 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.mycompany</groupId>
<artifactId>myproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-modeler-plugin</artifactId>
<version>3.2M1</version>
</plugin>
<plugin>
<groupId>org.apache.cayenne.plugins</groupId>
<artifactId>maven-cayenne-plugin</artifactId>
<version>3.2M1</version>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>10.10.1.1</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>cgen</id>
<configuration>
<superPkg>com.mycompany.model.generated</superPkg>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<destDir>${project.build.sourceDirectory}</destDir>
</configuration>
<goals>
<goal>cgen</goal>
</goals>
</execution>
<execution>
<id>cdbgen</id>
<configuration>
<map>${project.build.sourceDirectory}/../resources/datamap.map.xml</map>
<driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
<url>jdbc:derby:memory:tracedb;create=true</url>
<username>test</username>
</configuration>
<goals>
<goal>cdbgen</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.10.1.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
1) क्या आप सुनिश्चित हैं कि 'org.apache.derby.jdbc.ClientDriver' वास्तव में' derbyclient' निर्भरता में स्थित है? 2) '-X' कमांड लाइन पैरामीटर के साथ चलाने की कोशिश करें और देखें कि प्लगइन के निष्पादन पर क्लासपाथ इस निर्भरता में है या नहीं। –
क्या आप बता सकते हैं कि मेवेन उपकरण मैवेन रिपोजिटरी से derbyclient.jar की एक प्रति सफलतापूर्वक पुनर्प्राप्त कर रहे हैं या नहीं? मैं आम तौर पर मेवेन का उपयोग नहीं करता, लेकिन मुझे लगता है कि कभी-कभी संस्करण संख्या को जार नाम में एन्कोड किया जाता है, तो शायद आपको derbyclient_10_10_1_1.jar जैसे कुछ लाने की आवश्यकता है? –
मैं अपना मूल पोस्ट संपादित करूंगा - लेकिन 1) और 2 का त्वरित उत्तर) "हां" है (यह जार में है) और 2) बहुत यकीन है कि क्लासपाथ सही है (-एक्स आउटपुट से)। – monojohnny