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 <davide.gra...@email.it> 
Sent: 11 September 2020 14:18
To: derby-user@db.apache.org
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 <rick.hille...@gmail.com>
> Sent: 11 September 2020 00:49
> To: Derby Discussion <derby-user@db.apache.org>; RAPPAZ Francois 
> <francois.rap...@unifr.ch>
> 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    : davide.gra...@email.it
mobile   : +39 339 7468 778
linkedin : http://linkedin.com/in/davidegrandi

Reply via email to