Barcodes mit java
-
Habe mich jetzt mal intensiver mit dem letzeren Beispiel auseinandergesettzt, scheitere aber an der Stelle das ganze in eine Java Anwendung zu integrieren (also mit Embedding in a Java application von krysalis)
Habe dazu das "Howto" der Setie http://krysalis.org/barcode/embedding.html verwendet.
Mein Code sieht jetzt mal so aus:
import java.util.*; import java.awt.*; import java.awt.geom.*; import java.io.*; import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; public class test { public static void main(String args[]) { DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); } }
Jetzt die Fehlermeldung:
E:\Java\barcode>javac -Xlint:deprecation -classpath .\xml-apis.jar;.\avalon-framework-4.2.0.jar;.\krysalis-barcode.jar;. test.java E:\Java\barcode>java test Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/avalon/framework/configuration/DefaultConfigurationBuilder at test.main(test.java:17)
Nur was is da falsch? (habe schon die neue Version des avalon-framework probiert)
-
Hatte schonmal das selbe Problem, glaub das ist nicht lösbar - habe es damals aufgegeben...
Hatt jemand hierfür überhaupt schon etwas lauffähiges?
-
Ich habe inzwischen das jar File vom avalon framework extrahiert, und versucht die Klasse direkt zu laden, klappt aber auch nicht, folgende fehlermeldung krieg ich:
test.java:14: cannot access DefaultConfigurationBuilder bad class file: .\DefaultConfigurationBuilder.class class file contains wrong class: org.apache.avalon.framework.configuration.DefaultConfigurationBuilder Please remove or make sure it appears in the correct subdirectory of the classpath. DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); ^ 1 error
Kann mit dieser Meldung jemand was anfangen, bzw mit da weiterhelfen?
-
hi
hat mich nicht losgelassen, ist ja auch trübes wetter draussen.
also: zieh dir mal
http://sourceforge.net/project/showfiles.php?group_id=96670also das barcode4j, mit dem anderen hatte ich auch probleme.
was ist zutun:
der einfachheit halber das binary ziehen, ansonsten 'ant' an der hand haben und selber bauen.
dann die pfade legen. in der docu steht genau drin, wie, nur wollte es bei mir mal wieder nicht, und so legte ich alle jars der lib einfach in den build ordner.. thats it.die seite:
Using the Command Line Interface
der mitgelieferten dokutmentation beschreibt sehr ordentlich, wie man dann vorgeht.
ich habe zumindest, ohne mich mit barcode auszukennen, mal eben einen wunderbaren strichcode aus einer xml datei generiert zu einem png..
alles andere ist auch möglich, so wie du eben die optionen setzt.<?xml version="1.0" encoding="UTF-8"?> <barcode> <code128> <height>2cm</height> <module-width>0.5mm</module-width> </code128> </barcode>
nett gemacht das ganze.
wie gesagt: nimm barcode4j, das krysalis-barcode hat mir den nerv geraubt.so long, wenns nicht klappt, poste nochmal, aber achte total auf die mitgegebenen flags auf der kommandozeile.
-
erstmal Danke....
aber grrrr
Also das command line tool läuft, nur such ich das - ums mal vornehm zu sagen - nicht direkt.
Ich komm also wieder auf Embedding in a Java application, nur da kommt ja schon wieder das avalon dingsbums zu einstatz - und das will, wie kann mans anders erwarten, nicht
Hilft mir nochmal jemand *liebguck*
-
ohne dich noch mehr stressen zu wollen:
die obigen meldungen zu avalon hatte ich am anfang ebenso.
(genau die gleichen wortlaute )
problem war einzig und allein die übliche classpath einstellung.im notfall: direkt draufsetzen, oder in den libordner mit reinwerfen, oder sonstige (schlechte) dinge.
im allergrößten notfall: den source benutzen, nicht das jarfile, und per hand einbinden. (gibt es auch zum download)..
viel glück.
-
Wie dann hast du das Problem gelöst?
Ich geh hier fast ein, hattest recht mit dem Stress1. Lösung:
Ich hab das jar-File sammt dem Ordner wo's liegt in den Classpath aufgenommen, das muss doch im Prinzip reichen... mehr kann ich ja eh net machen ---> geht aber net s.o.Ok, dann eben 2. Lösung:
Alle Fils direkt in den Ordner, den in den classpath, müsste auch gehen --> war aber klar dass es net tut, gleiche meldungDann 3. Lösung:
Dirket die class files ohne jar, alle direkt in ein Verzeichniss --> Looogisch tut auch net, jetzt ist wohl seine Verzeichnissstrucktur im Eimer...Welche Lösung ging, wo lagen da die Files und wie war der classpath, hoff das ich mit den Infos weiterkommen würde....
-
habe jeden jar einzeln in den classpath gesetzt.
also persönlich angesprochen.
erst dann gings.die mitgelieferte batch ist leider nicht in ordnung.
habe mich ein wenig hieran orientiert:
java -cp build\barcode4j.jar;lib\avalon-framework-4.1.5.jar;lib\commons-cli-1.0.jar org.krysalis.barcode4j.cli.Main <parameters
wobei die cli.main bei mir im jar drin sitzt, und ich nur die jars explizit benennen musste.
http://barcode4j.krysalis.org/cli.html
ps: aus gründen der vereinfachung lag zum schluss alles im gleichen ordner. sprich: die barcode4j.jar mit dem framework im selben. nicht wie ursrprünglich im build und lib.
nicht schön, aber selten
-
elise schrieb:
habe jeden jar einzeln in den classpath gesetzt.
Das muß man auch. jar-files werden nicht aus Ordnern geparst.
-
Ja das Command line Interface tut ja, da hat die Lösung - alles in einen Ordner rein - auch funktioniert
Was nicht tut is hier die Lösung für das eingebettete JavaMeine derzeitige Kompileroption sieht so aus:
javac -classpath .;.\barcode4j.jar;.\avalon-framework-4.1.5.jar test.java java test
Die frage is nur WO is das Problem? Mehr kann ich ja eigentlich nemme machen
-
ein bisschen schimpfen muss ich schon..
im grunde gibt es keinen unterschied zwischen commandozeile und embedded.
hast du das beigelegte pdf gelesen und dazu noch die doku durchgeschaut? dafür sind sie da.. (so, genug geschimpft )
hier ein funktionierendes beispiel, und achte auf die pfade, auch bei der ausführung den classpath setzen.
//kurz hingeschmiert, ohne schönheitsanspruch //der barcodegenerator ist ein singleton. import org.apache.avalon.framework.configuration.Configuration; import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder; import org.krysalis.barcode4j.output.bitmap.*; import org.krysalis.barcode4j.*; import org.krysalis.barcode4j.BarcodeUtil; import java.awt.image.*; import java.io.*; class BarcodeTest { static String msg="hallo"; public static void main( String args[] ) { new BarcodeTest(); Configuration cfg; BarcodeGenerator gen =null ; DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder(); try{ cfg = builder.buildFromFile(new File("test.xml")); gen = BarcodeUtil.getInstance().createBarcodeGenerator(cfg ); }catch (IOException e){ System.out.println("io:"+e); }catch (org.xml.sax.SAXException s){ System.out.println("SAX:"+s); }catch (org.apache.avalon.framework.configuration.ConfigurationException c){ System.out.println("Sava:"+c); }catch(org.krysalis.barcode4j.BarcodeException b){ System.out.println("BAD"+b); } try{ OutputStream out = new java.io.FileOutputStream(new File("output.png")); BitmapCanvasProvider provider = new BitmapCanvasProvider( out, "image/x-png", 300, BufferedImage.TYPE_BYTE_GRAY, true); gen.generateBarcode(provider, msg); provider.finish(); }catch (IOException e){} } }
ps: warum ich schimpfe? weil immer erstmal auf den source geschimpft wird, statt die beigelegten faqs zu lesen. wie der obige andere anonyme...
-
Also vorweg erstmal DANKE!
Es läuft und das jetzt auf meine Bedürfnisse anzupassen, das dürfte nemme so schwer werden!
Und jetz die Hilfe für alle die, die vor dem geleichen Problem stehen: Wenn der Compiler ohne Fehler drübergeht, aber die VM nicht will, prüft den classpath nochmal genau! Denn man überliest so leicht wasSo on - nen guten Rutsch!
-
Matthias79 schrieb:
Also vorweg erstmal DANKE!
Es läuft und das jetzt auf meine Bedürfnisse anzupassen, das dürfte nemme so schwer werden!
Und jetz die Hilfe für alle die, die vor dem geleichen Problem stehen: Wenn der Compiler ohne Fehler drübergeht, aber die VM nicht will, prüft den classpath nochmal genau! Denn man überliest so leicht wasSo on - nen guten Rutsch!
*grins*
leider kommt sowas oft daher, dass leute nur mit ide arbeiten, und nicht auf konsole/bash..
lalalada denn viel spaß mit den strichen.
-
leider kommt sowas oft daher, dass leute nur mit ide arbeiten, und nicht auf konsole/bash..
lalalaEigentlich dürfte das mir nix ausmachen, hab auf meinem Rechner net mal ne IDE (also für Java) - bin nur zugegebenermaßen etws grün auf dem Java - Gebiet...
-
sorry, war nicht auf dich gemünzt, nur so eine erfahrung ...
he, draußen fliegen schon raketen, jetzt schon... .. na ja.