【问题标题】:Configuration error. Class [org.apache.derby.jdbc.EmbeddedDriver] not found while connecting to DB配置错误。连接到数据库时找不到类 [org.apache.derby.jdbc.EmbeddedDriver]
【发布时间】:2015-05-18 05:24:57
【问题描述】:

我正在使用命令 mvn exec:javacmd 运行我的应用程序。我的 Persistence.xml 属性是:

<properties>
        <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:derby:DB;create=true" />
        <property name="javax.persistence.jdbc.user" value="test" />
        <property name="javax.persistence.jdbc.password" value="test" />

        <!-- EclipseLink should create the database schema automatically -->
        <property name="eclipselink.ddl-generation" value="create-tables" />
        <property name="eclipselink.ddl-generation.output-mode"
            value="database" />
        <property name="connection.autocommit" value="false"/>
    </properties>

我的 pom.xml 依赖和构建属性是:-

 <dependencies>
        <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.5.0</version>
</dependency>
    <dependency>
        <groupId>org.glassfish.jersey.connectors</groupId>
        <artifactId>jersey-grizzly-connector</artifactId>
        <version>2.16</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-http</artifactId>
        <version>2.16</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-grizzly2-servlet</artifactId>
        <version>2.16</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.grizzly</groupId>
        <artifactId>grizzly-framework</artifactId>
        <version>2.3.18</version>
    </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <inherited>true</inherited>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <mainClass>com.example.Main</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

如果使用run as java application 运行eclipse 中的主类,它运行良好,但使用命令mvn exec:java 会出现配置错误的错误。找不到类 [org.apache.derby.jdbc.EmbeddedDriver]。

【问题讨论】:

    标签: java eclipse maven jpa derby


    【解决方案1】:

    对于任何在德比方面遇到问题的人: 现在(从版本 10.15.2.0 开始),他们的驱动程序是 org.apache.derby.iapi.jdbc.AutoloadedDriver

    【讨论】:

    • 这个答案我不能给 100 分,这个页面每个用户只允许一分,但我想让你知道你的答案有多有用。
    【解决方案2】:

    您的pom.xml 中缺少带有Derby 驱动程序的库。 尝试将其添加到您的 pom.xml 中:

    <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derbyclient</artifactId>
        <version>10.11.1.1</version>
    </dependency>
    

    在 Eclipse 中它正在运行可能是因为您手动将驱动程序添加到类路径中。

    【讨论】:

    • 仅在依赖 derby 的情况下工作正常。
    • derbyclient 用于使用客户端-服务器驱动程序的连接 URL,derby 用于使用嵌入式驱动程序的连接 URL。由于 persistence.xml 指定了嵌入式驱动程序,因此 derby 是要使用的正确 artifactid。
    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2013-03-28
    • 2021-05-14
    • 2013-06-26
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多