# probleme mit package



## Guest (5. Okt 2005)

hy
ich bin daran, eine build.xml zu basteln, damit ich mir meine classfiles aus den javafiles automatisch generieren lassen kann. ich brauche das, damit ich nicht das projekt kompilieren muss.

nun habe ich aber probleme mit dem package.

meine ordnerstruktur sieht wie folgt aus:

H:\Projekte\ProjektABC\Test\Simulator\
in diesem Verzeichnis ist mein JBuilder Projekt und hier befinden sich folgende Ordner und dateien

src\
classes\
lib\
build.xml

nun, die java-files befinden sich im ordner src
da sich die klassen im package com.trade.simulator.rpc befinden gibt das folgende struktur:

src\com\trade\simulator\rpc

und dementsprechend auch die ordenerstruktur der class files

classes\com\trade\simulator\rpc

das ziel der build.xml datei ist es, mit dem befehl javac die classfiles der bestehnden javafiles in order src\com\trade\simulator\rpc
zu generieren und diese classfiles im ordner  classes\com\trade\simulator\rpc abzulegen.

dies geschieht foldnermassen:




build.xml:

```
<?xml version="1.0"?>

  <project default="jarRuntime" basedir=".">

  <property name="srcsim.dir" value="src" />

  <property name="buildsim.dir" value="classes" />

  <property name="lib.dir" value="lib" />

  <property name="packagesim" value="com/trade/simulator" />

  <property name="packagesim.rpc" value="${packagesim}/rpc" />

  <property name="packagenamesim" value="com.trade.simulator " />

  <property name="packagenamesim.rpc" value="${packagenamesim}.rpc" />

<target name="createClassFiles">
  <javac srcdir="${srcsim.dir}/${packagesim.rpc}" destdir="${buildsim.dir}/${packagesim.rpc}">
    <classpath>
        <fileset dir="${lib.dir}">
          <include name="**/*.jar"/>
        </fileset>
      </classpath>
    </javac>
   </target>

</project>
```

wenn ich createClassFiles laufen lasse, werden folgende Fehlermeldungen ausgegeben:

"GuiNoPar_get.java":     [javac] H:\Projekte\ProjektABC\Test\Simulator\src\com\trade\simulator\rpc\GuiNoPar_get.java:19: Package H:\Projekte\ProjektABC\Test\Simulator\src\com\trade\simulator\rpc\GuiNoPar_get.java stated in source com.trade.simulator.rpc does not match directory H:\Projekte\ProjektABC\Test\Simulator\src\com\trade\simulator\rpc\GuiNoPar_get.java. at line 19


weiss jemand, woran das liegen kann?
weiss javac überhaupt, dass das package erst ab ordner src beginnt und com.trade.simulator.rpc heissen muss?

die java-files liegen im richtigen verzeichnis und haben auch den richtigen packagebefehl:



```
package com.trade.simulator.rpc;
```

liebe grüsse
trade


----------



## Mag1c (5. Okt 2005)

Moin,

beim Compiler-Aufruf darfst du die Packages nicht mit angeben. Versuche mal:


```
<javac srcdir="${srcsim.dir}" destdir="${buildsim.dir}">
```

Gruß
Mag1c


----------



## Guest (5. Okt 2005)

guten morgen

vielen dank für deine antwort.
es hat geklappt.

nun habe ich aber ein weiteres problem:

es werden klassen nicht gefunden, welche in einem jar file liegen.

"GuiCurvePoint.java":     [javac] H:\Projekte\ProjektABC\Test\Simulator\src\com\trade\simulator\rpc\GuiCurvePoint.java:34: cannot resolve symbol: class XdrDecodingStream in class com.trade.simulator.rpc.GuiCurvePoint at line 34

Das Class- File der Klasse XdrDecodingStream liegt im jar file oncrpc.jar


dieses habe ich aber folgendermassen angegeben:


```
<fileset dir="${lib.dir}"> 
          <include name="**/*.jar"/> 
</fileset>
```

so sollte es doch alles jar files, welche sich im ordner lib befinden verwenden oder?

liebe grüsse
trade[/code]


----------



## Mag1c (5. Okt 2005)

Hi,

hmm, ja, sieht eigentlich ok aus. Im JBuilder klappt das übersetzen ?

Versuche mal, statt des fileset das .jar direkt anzugeben. Funktioniert das ?


```
<classpath>
    <pathelement location="lib/oncrpc.jar"/>
</classpath>
```

Gruß
Mag1c


----------



## Guest (5. Okt 2005)

ja das übersetzten im JBuilder funktioniert.
also aus den javadateien kann Jbuilder problemlos class files erzeugen.
d.h. er findet die classfiles im jar file oncrpc.jar

hmm
ich habe es nun auch noch mit dem pathelement versucht wie du es vorgeschlagen hast.
funktioniert auch nicht, es gibt die gleichen fehlermeldungen!

jetzt bin ich ratlos!

liebe grüsse
trade


----------



## Mag1c (5. Okt 2005)

Hi,

dann liegts wohl nicht an der ant-Config. Wie sieht denn das lib-Verzeichnis aus ? Welche Einstellungen benutzt du im JBuilder ? Vielleicht fehlen ja noch weitere Klassen/JARs.

Gruß
Mag1c


----------



## Guest (5. Okt 2005)

also, ich habe unter Tools-> Configure Libraries das Jar- File angegeben.  und dieses verwende ich unter project-> Project Properties unter Required Libraries. So findet der JBuilder diese Classfiles.



Meinst du das Libverzeichnis mit dem Jarfile drin?
das sieht so aus:

lib\oncrpc.jar

oder wie meinst du?

Das Jarfile oncrpc.jar ist fogendermassen aufgebaut:

\org\acplt\oncrpc
und darin sind all die benötigten class-files.

in der manifest datei steht folgendes:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.3 
Created-By: 1.4.2-b28 (Sun Microsystems Inc.)

obwohl ja das wohl nichts damit zu tun hat..

liebe grüsse
trade


----------



## Mag1c (5. Okt 2005)

Sehr komisch  :shock: 

1. versuche es mal mit dem absoluten Pfad zum JAR

2. setze im <javac-Tag mal verbose="on"

3. Wie sieht deine aktuelle build.xml aus ?

(Habe irgendwie keinen Anhaltspunkt mehr)

Gruß
Mag1c


----------



## Guest (5. Okt 2005)

hy
ich hatte gerade ne schulung,drum schreibe ich erst jetzt.
ich komme nicht mehr weiter!

ich habe alles versucht. auch das verbose hat mir nichts gebracht.
meine build.xml sieht folgendermassen aus:

(habe alles was ich im moment nicht brauche rausgeschmissen!)
die packagename und somit auch ordnernamen haben gegenüber oben geändert!!!


```
<?xml version="1.0"?>
<!--
  ===========================================================================
   Build file for the QcGui project.
  ===========================================================================
-->
<project default="createClassFiles" basedir=".">
  

  
  <property name="srcsim" value="src" />
  <property name="buildsim" value="classes" />
  <property name="lib" value="lib" />

  <!--
    ==========================================================================
     Generate all RPC related files
    ==========================================================================
  -->

  <target name="createClassFiles">

  <javac srcdir="${srcsim}" destdir="${buildsim}" >
   <classpath> 
     <pathelement location="lib/oncrpc.jar"/> 
    <pathelement location="lib/portmap.jar"/>
    </classpath>
    
<!--
        <fileset dir="lib"> 
          <include name="H:/Projekte/PrjGuiSimulator/GuiSimulatorTest/QcGuiSim/lib/oncrpc.jar"/> 
    </fileset>  
-->

  </javac>
   </target>

</project>
```

ich habe alles ausprobiert. auch mit absoluten pfäden etc.

weiss nicht an was das es liegt, dass die klassen, welche im jar file oncrpc.jar sind nicht erkannt werden?

liebe grüsse
trade


----------



## Mag1c (5. Okt 2005)

Hi,

hab mal exakt mit deinem build.xml getestet und bei mir gehts (hab als lib ojdbc14.jar benutzt). Benutzt du das classes-Dir auch im JBuilder ? Falls ja, nimm mal ein anderes (z.B. classes_ant)

Welche Augabe kommt bei verbose="on" ?

Gruß
Mag1c


----------



## Guest (5. Okt 2005)

maaaaaan
es funktioniert und ich fass es kaum !!!
ich habe ein anderes classes - verzeichnis angelegt und dieses angegeben im build.xml und nun funktioniert es!!
aber wiso kann ich nicht das gleiche classes verzeichnes nehmen wie der jbuilder??

vielen dank mag1c für deine bemühungen!

 :wink: 

liebe grüsse
trade


----------



## Mag1c (5. Okt 2005)

Hi,

der Java-Compiler prüft schon vorhandene class-Files. Wer weiß, worüber der da gestolpert ist. Du kannst auch das gleiche nehmen, wenn du beim ant-Build das Verzeichnis vorher leer machst. Ich weiß nur nicht, wie der JBuilder darauf reagiert. Eclipse ist da ein wenig zickig, da es selbst dort immer einen aktuellen kompilierten Stand vorhält.

Gruß
Mag1c


----------



## Guest (5. Okt 2005)

hy
ich mache nun das verzeichnis zuerst leer, bevor ich die java-files in das verzeichnis generiere!
somit kann ich das gleiche classes- directory verwenden 

herzlichen dank für deine Hilfe!
liebe grüsse
trade


----------

