[ https://issues.apache.org/jira/browse/DERBY-7097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17267365#comment-17267365 ]
Richard N. Hillegas commented on DERBY-7097: -------------------------------------------- Hi Daniel, I am afraid that I don't understand your last comment about the Derby libraries. I only see the client driver mentioned by https://db.apache.org/derby/docs/10.15/getstart/rgslib46043.html. Note that derbytools.jar is only needed for embedded usage if you fault in your driver via Class.forName("org.apache.derby.jdbc.EmbeddedDriver"), as the original documentation recommended back in the 1990s. Java 5 and 6 introduced driver autoloading. You do not need derbytools.jar for embedded usage if you fault in your driver via a DataSource or via DriverManager.getConnection(). You only need derby.jar and derbyshared.jar. The following program shows this: {noformat} import java.sql.*; public class Z { public static void main(String... args) throws Exception { Connection conn = DriverManager.getConnection("jdbc:derby:memory:db;create=true"); conn.prepareStatement("create table t(a int)").execute(); conn.prepareStatement("insert into t values (1), (2), (3)").execute(); try (PreparedStatement ps = conn.prepareStatement("select * from t")) { try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { println(rs.getString(1)); } } } } private static void println(String text) { System.out.println(text); } } {noformat} When I run that program thusly... {noformat} #!/bin/bash derbyJarDir=/Users/rhillegas/sw/z/db-derby-10.15.2.0-bin/lib export CLASSPATH=/Users/rhillegas/src:$derbyJarDir/derby.jar:$derbyJarDir/derbyshared.jar echo $CLASSPATH java Z {noformat} ...I see the following output: {noformat} /Users/rhillegas/src:/Users/rhillegas/sw/z/db-derby-10.15.2.0-bin/lib/derby.jar:/Users/rhillegas/sw/z/db-derby-10.15.2.0-bin/lib/derbyshared.jar 1 2 3 {noformat} > Update documentation to allow users to properly use EmbeddedDriver > ------------------------------------------------------------------ > > Key: DERBY-7097 > URL: https://issues.apache.org/jira/browse/DERBY-7097 > Project: Derby > Issue Type: Bug > Components: Documentation > Affects Versions: 10.15.2.0 > Reporter: Daniel Le Berre > Priority: Major > Attachments: derby-7097-01-aa-jpms-related-website-changes.diff, > derby-7097-01-ab-jpms-related-website-changes.diff, > derby-7097-02-aa-releaseSummary.diff > > > In earlier version of Derby, and as reported in the documentation, the > EmbeddedDriver class was in derby.jar. > As such, it was quite easy to deploy a webapp with an embedded derby > database: it was sufficient to just add a derby.jar file to the project > library. > In current releases of derby (10.15.2.0), the EmbeddedDriver class is no > longer in the derby.jar file but in the derbytools.jar file. > ``` > $ for i in `ls *.jar`; do echo $i ; jar tf $i | grep Driver ; done > derby.jar > org/apache/derby/iapi/jdbc/AutoloadedDriver$1.class > org/apache/derby/iapi/jdbc/AutoloadedDriver.class > org/apache/derby/iapi/jdbc/Driver42.class > org/apache/derby/iapi/jdbc/InternalDriver$1.class > org/apache/derby/iapi/jdbc/InternalDriver$2.class > org/apache/derby/iapi/jdbc/InternalDriver$3.class > org/apache/derby/iapi/jdbc/InternalDriver$4.class > org/apache/derby/iapi/jdbc/InternalDriver$5.class > org/apache/derby/iapi/jdbc/InternalDriver$DaemonThreadFactory.class > org/apache/derby/iapi/jdbc/InternalDriver$LoginCallable.class > org/apache/derby/iapi/jdbc/InternalDriver.class > META-INF/services/java.sql.Driver > derbyLocale_cs.jar > derbyLocale_de_DE.jar > derbyLocale_es.jar > derbyLocale_fr.jar > derbyLocale_hu.jar > derbyLocale_it.jar > derbyLocale_ja_JP.jar > derbyLocale_ko_KR.jar > derbyLocale_pl.jar > derbyLocale_pt_BR.jar > derbyLocale_ru.jar > derbyLocale_zh_CN.jar > derbyLocale_zh_TW.jar > derbyclient.jar > org/apache/derby/client/ClientAutoloadedDriver.class > META-INF/services/java.sql.Driver > derbynet.jar > derbyoptionaltools.jar > derbyrun.jar > derbyshared.jar > derbytools.jar > org/apache/derby/jdbc/ClientDriver.class > org/apache/derby/jdbc/ClientDriver40.class > org/apache/derby/jdbc/EmbeddedDriver.class > ``` > As such, most of the tutorials found on the internet about "how to use derby > in embedded mode" are just wrong because they simply mention derby.jar as a > dependency. > Worst, derby own documentation is not up to date: as such, I had no way to > understand why new releases of this tool that I have been using for more than > a decade in the classroom suddenly did not work anymore. > The explanation is finally simple: I just wonder how such impacting decision > could be done without proper documentation. > I am also surprised to be the first one reporting this, since the problem > exists since at least a year. > There are two possible fix to this issue: > * move back the EmbeddedDriver class to derby.jar (my favorite option I > would say), but I guess there is a good reason for moving those classes to > derbytools.jar > * update the documentation on Derby's web site, with a quite visible alert > about this change. > > I have been a pretty happy user of derby for years, and will certainly be in > the future. Thanks for that great tool. However, that breaking change has > been particularly annoying, which is the reason of that bug report. -- This message was sent by Atlassian Jira (v8.3.4#803005)