Ant sucht die Klasse BSFException

CFranke

Grünschnabel
Hallihallo,

Ein ähnliches Problem hab ich hier nur in einem Thread von 2007 gefunden, bei dem aber die Frage nicht weiter beantwortet wurde. Ich bin da beim Benutzen der Ant-API auf ein Problem gestossen, bei dem ich gerade nicht weiter komme.

Ich hab ein Programm, bei dem der User aus dem Programm heraus Ant anstossen kann, um andere Projekte zu bauen. Zum Thema, wie man Ant aus Java heraus aufruft, hab ich leider herzlich wenig gefunden, aber mittlerweile läuft das. Dieser Ant-Aufruf findet in einem Swingworker-Thread statt und sieht folgendermaßen aus:

Code:
        // look up build.xml
        File buildFile = new File("build.xml");

        // die zwei System-Properties muss ich manuell setzen, da Ant sonst falsche Werte nimmt
        System.setProperty("java.home", System.getenv("JAVA_HOME"));
        System.setProperty("ant.home", System.getenv("ANT_HOME"));

        // create ant-project
        org.apache.tools.ant.Project antProject = new org.apache.tools.ant.Project();
        antProject.setUserProperty("ant.file", buildFile.getAbsolutePath());

        // init logger for ant output
        DefaultLogger consoleLogger = new DefaultLogger();
        consoleLogger.setErrorPrintStream(System.err);
        consoleLogger.setOutputPrintStream(System.out);
        consoleLogger.setMessageOutputLevel(org.apache.tools.ant.Project.MSG_INFO);
        antProject.addBuildListener(consoleLogger);

        // start ant build
        try {
            antProject.fireBuildStarted();
            antProject.init();

            ProjectHelper helper = ProjectHelper.getProjectHelper();
            antProject.addReference("ant.projectHelper", helper);

            // parse build.xml for the ant-project
            helper.parse(antProject, buildFile);

            // execute
            antProject.executeTarget(antProject.getDefaultTarget());

            antProject.fireBuildFinished(null);
            
        } catch (BuildException e) {
            log.log("\n => " + e.getMessage() + " <=", HandleLog.WAR);
            antProject.fireBuildFinished(e);
            return false;
        }

Das Ant-Script ist recht komplex und irgendwann komme ich an folgende Stelle:

Code:
<script language="JavaScript" manager="javax"><![CDATA[
    // some java script
]]></script>

Genau an der Stelle haut mir Ant eine seltsame Fehlermeldung um die Ohren:

Cause: Could not load a dependent class com/ibm/bsf/BSFException
It is not enough to have Ant's optional JARs
you need the JAR files that the optional tasks depend upon.
Ant's optional task dependencies are listed in the manual.
Action: Determine what extra JAR files are needed, and place them in one of:
-C:\CVS_ROOT\toolchain\bin\ant\1.7.1\lib
-C:\Dokumente und Einstellungen\cfr\.ant\lib
-a directory added on the command line with the -lib argument

Do not panic, this is a common problem.
The commonest cause is a missing JAR.

This is not a bug; it is a configuration problem

Laut den Library Dependencies in der Ant-Doku wird aber seit Ant 1.6 nicht mehr die IBM-Bibliothek verwendet (ich verwende Ant 1.7). Auch, wenn ich die dort vorgeschlagene bsf.jar von Jakarte-BSF in das Verzeichnis aus der Fehlermeldung lege, passiert immer noch das selbe.


Ich bin da momentan schlicht und ergreifend ratlos, wo der Fehler liegen könnte und bin für jeden Tip dankbar.


Gruß,
-- Christian
 
Zurück