Hi Davide,
My versions are
U:\docs\OA\derby>java --version
java 9
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
U:\docs\OA\derby>jar --version
jar 9
U:\docs\OA\derby>ant -version
Apache Ant(TM) version 1.10.1 compiled on February 2 2017
My ant task to build the jar file
<property name="db.name" value="docentries"/>
<target name="jar" depends="getstuff">
<genjar jarfile="${target.dir}/${proj.dir}/${jar.file}">
<classpath refid="class.path" />
<!-- include main class and all its dependencies -->
<class name="${main.class}" />
<resource package="docentries">
<fileset dir="U:\docs\OA\derby"
includes="${db.name}/*.properties" />
<!-- <fileset dir="derby"
includes="U:\docs\jprogarchives\${db.name}/*.properties" /> -->
</resource>
<resource package="docentries/log">
<fileset dir="U:\docs\OA\derby" includes="${db.name}/log/"
/>
</resource>
<resource package="docentries/seg0">
<fileset dir="U:\docs\OA\derby"
includes="${db.name}/seg0/" />
</resource>
<!-- define the manifest -->
<manifest>
<attribute name="Main-Class" value="${main.class}" />
<!-- http://mindprod.com/jgloss/jar.html -->
<attribute name="Class-Path" value="derby.jar" />
</manifest>
</genjar>
</target>
I add derby.jar in the manifest of the jar I'm building since I use it from my
own classes. The derby.jar and my app.jar are in the same folder.
Just one more point: A Jar file made 2 years ago (2018) still works correctly.
Cheers
François
-----Original Message-----
From: Davide Grandi <[email protected]>
Sent: 11 September 2020 14:18
To: [email protected]
Subject: Re: database in a jar : conglomerate does not exists
Hello,
maybe the steps you follow are decisive :
- ".jar" files are only .zip files, but zip files have too many internal formats
- maybe the jar generation defaults are changed from what your derby "expects"
if you gives the usual details (JDK, jva -version, commands, ...) one could
replicate the environment and your specific situation.
Bye,
Davide Grandi
On 11/09/2020 09:33, RAPPAZ Francois wrote:
> If I start from a new database (named docentries), I packed it in a jar, I
> can connect with ij and run a select command.
>
> If I run the code from my java classe, I get the error
>
> ----- SQLException -----
> SQL State: XJ040
> Error Code: 40000
> Message: Failed to start database 'classpath:docentries', see the next
> exception for details.
>
> ----- SQLException -----
> SQL State: XCL20
> Error Code: 20000
> Message: Catalogs at version level 'null' cannot be upgraded to version
> level '10.4'.
>
> I connect with db = new
> DBConnector("jdbc:derby:classpath:docentries");
>
> François
>
> -----Original Message-----
> From: Rick Hillegas <[email protected]>
> Sent: 11 September 2020 00:49
> To: Derby Discussion <[email protected]>; RAPPAZ Francois
> <[email protected]>
> Subject: Re: database in a jar : conglomerate does not exists
>
> Also, look inside the jar file for a directory called docentries/seg0.
> Does it contain a file called c560.dat?
>
> On 9/10/20 8:53 AM, Rick Hillegas wrote:
>> Sorry. Make that query:
>>
>> SELECT s.schemaName, t.tableName, c.conglomerateName
>>
>> FROM sys.sysConglomerates c, sys.sysSchemas s, sys.sysTables t
>>
>> WHERE c.conglomerateNumber = 1376
>>
>> AND c.tableID = t.tableID
>>
>> AND t.schemaID = s.schemaID
>>
>> ;
>>
>>
>> On 9/10/20 8:22 AM, Rick Hillegas wrote:
>>> Hi François,
>>>
>>> Do you have any information or theories about how your database
>>> became corrupted? I have never encountered this situation before. A
>>> database in a jar file should be read-only, so the only theory I
>>> have is that the jar file itself was corrupted by some process outside
>>> Derby.
>>>
>>> Please run the following query in order to find out what table/index
>>> is corrupted:
>>>
>>> SELECT s.schemaName, t.tableName, c.conglomerateName
>>>
>>> FROM sys.sysConglomerates c, sys.sysSchemas s, sys.sysTables t
>>>
>>> WHERE c.conglomerateNumber = 376
>>>
>>> AND c.tableID = t.tableID
>>>
>>> AND t.schemaID = s.schemaID
>>>
>>> ;
>>>
>>>
>>> Thanks,
>>> -Rick
>>>
>>> On 9/10/20 3:09 AM, RAPPAZ Francois wrote:
>>>> Hi
>>>> I have a one table database embedded in a jar file. I tried to
>>>> access it from ij with java -jar %DERBY_HOME%/lib/derbyrun.jar ij
>>>> -p ij.properties
>>>>
>>>> ij.properties is
>>>> derby.ui.codeset=utf8
>>>> ij.connection.doc=jdbc:derby:jar:(U:/docs/OA/articles/zlib/autconv/
>>>> a
>>>> utconv.jar)docentries
>>>>
>>>>
>>>> I can see that my table (authors) is in the the database with SHOW
>>>> TABLES; I can see the columns
>>>> ij> DESCRIBE authors;
>>>> COLUMN_NAME
>>>> |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
>>>> -------------------------------------------------------------------
>>>> -
>>>> ----------
>>>>
>>>> NAME1 |VARCHAR |NULL|NULL|20 |NULL |40 |NO
>>>> NAME2 |VARCHAR |NULL|NULL|20 |NULL |40 |NO
>>>> DATA |VARCHAR |NULL|NULL|50 |NULL |100
>>>> |YES AUTHOR_ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL
>>>> |NO
>>>>
>>>> 4 rows selected
>>>> But I can't run a select statement:
>>>> ij> select * from authors;
>>>> ERROR XSAI2: Le conglomerat (1,376) demande n'existe pas.
>>>> ij> exit;
>>>>
>>>> I have derby 10.8.2.2
>>>> Thanks for any help.
>>>>
>>>> François
>>>>
>>>
>>
--
Ing. Davide Grandi
email : [email protected]
mobile : +39 339 7468 778
linkedin : http://linkedin.com/in/davidegrandi