ANT Problem



  • Hallo,

    ein eigenes Package zu erstellen, habe ich ja mittlerweile geschafft, dieses in ein eigenes Programm zu importieren auch.
    Kompiliere ich das eigene Programm mit javac und führe es aus, so passiert alles so, wie es soll.
    Nun habe ich aber ein Projekt, das etwas größer ist und mit Ant compiliert werden soll.
    Kompilieren läßt es sich auch, doch beim Ausführen findet er auf einmal mein Package nicht mehr.

    java.lang.NoClassDefFoundError: esb/SerializedString
    

    Woran liegt sowas ? Kann mir jemand helfen ?



  • Hallo nochmal,

    ich schreibe es nochmal anders auf:

    Mein eigenes Pakt liegt unter d:\esb\jdk\lib\esb\ ... (java-Dateien)

    Das Testprogramm importiert mit import esb.*;
    Läuft einwandfrei.

    Baue ich jedoch ein anderes Paket mit ant , also

    package anderesPaket;
    import esb.*;

    dann kompiliert er es zwar, aber laufen tut es nicht mehr, da er das Paket esb nicht findet.
    😞



  • hast du die pfade im xml file richtig eingegeben?

    hier die entsprechende seite..http://ant.apache.org/faq.html





  • Im build.xml habe ich unter anderem stehen:

    <path id="compile.classpath">
    <pathelement location="lib/jaxen1.1beta2.jar"/><pathelementlocation="{lib}/jaxen-1.1-beta-2.jar"/> <pathelement location="{lib}/ae_rtbpel.jar"/>
    <pathelement location="lib/aert.jar"/><pathelementlocation="{lib}/ae_rt.jar"/> <pathelement location="{lib}/axis.jar"/>
    <pathelement location="{lib}/jaxrpc.jar"/> lib/commonslogging.jar"/><pathelementlocation="{lib}/commons-logging.jar"/> <pathelement location="{lib}/commons-discovery.jar"/>
    <pathelement location="lib/saaj.jar"/><pathelementlocation="{lib}/saaj.jar"/> <pathelement location="{lib}/wsdl4j.jar"/>
    <pathelement location="d:\esb\jdk\lib"/>
    </path>

    und mein CLASPPATH ist:

    .;d:\esb\jdk\lib;d:\esb\jdk\bin;d:\esb\junit\junit.jar;

    Es funktioniert immernoch nicht, egal was ich setze. 😞



  • lies dir das mal durch
    http://www.linux-magazin.de/Artikel/ausgabe/2001/05/ants/ant.html

    das passt nicht, denk ich, so kurz drübergeschaut
    <pathelement location="d:\esb\jdk\lib"/>



  • Ant habe ich mittlerweile umgangen, keine Änderung.

    Ich habe jetzt folgende Struktur:

    Mein eigenes Paket namens esb.
    Liegt in d:\esb\jdk\lib\esb
    Testprogramm dazu importiert einfach nur mit import esb.*
    javac TestClient.java
    und java TestClient funktionieren

    Dann das andere Paket: package xxx;
    Liegt als Ant-Build-Verzechnis auf d:
    Läßt sich compilieren
    Ich importiere hier mein esb-package import esb.*;
    Er findet es und kompiliert sogar im esb-Verzeichnis, wenn es noch nicht gemacht wurde.

    Führe ich aus, schlägt es fehl.

    Um Ant zu umgehen, habe ich jetzt schon im esb-Build-Verzeichnis ein Testprogramm geschrieben:

    package org.activebpel.samples.muster_calc.custfuncs;
    
    import java.io.*;
    import java.net.*;
    import java.util.prefs.*;
    import java.util.*;
    import esb.*;
    
    public class CustomFunctions 
    {
     public static void main(String args[])
     {
    try
    {  
    System.out.println(  calcAdd("","",""));
    }
    catch(Exception e)
    {
    }
     }
    
    public static String calcAdd(String b1, String b2, String s3) throws ClassNotFoundException, IOException
    {
     ...
    }
    
    }
    

    So funktioniert es nicht, aber so:

    import java.io.*;
    import java.net.*;
    import java.util.prefs.*;
    import java.util.*;
    import esb.*;
    
    public class CustomFunctions 
    {
     public static void main(String args[])
     {
    try
    {  
    System.out.println(  calcAdd("","",""));
    }
    catch(Exception e)
    {
    }
     }
    
    public static String calcAdd(String b1, String b2, String s3) throws ClassNotFoundException, IOException
    {
     ...
    }
    
    }
    

    Irgendwas stimmt da mit den Namensräumen nicht, was mache ich denn falsch, wenn ich ein eigenes Package in einem anderen benutzen will ?



  • Snake_y schrieb:

    Dann das andere Paket: package xxx;
    Liegt als Ant-Build-Verzechnis auf d:
    Läßt sich compilieren
    Ich importiere hier mein esb-package import esb.*;
    Er findet es und kompiliert sogar im esb-Verzeichnis, wenn es noch nicht gemacht wurde.

    Führe ich aus, schlägt es fehl.

    auch java braucht den classpath, wie javac.



  • Hallo,

    ich habe das Ganze jetzt nochmal etwas anders gestaltet, komme aber irgendwie nicht auf den Fehler:

    Ich habe jetzt mein eigenes Package esb mit in das Ant-Verzeichnis gezogen.

    Folgenden Aufbau habe ich jetzt:

    meinPackage/client/TestClient.java ( package meinPackage.client; import meinPackage.esb.*; )

    meinPackage/esb/SerObject.java ( package meinPackage.esb; )

    meinPackage/custom/test.java

    package meinPackage.custom;
    import meinPackage.esb.*;

    Sobald ich jetzt hier etwas mit SerObject mache, schlägt es fehl.


Anmelden zum Antworten