• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Wie kompiliere ich *.java (in eine *.jar-Datei)?

  • Ersteller Ersteller Dreamlander
  • Erstellt am Erstellt am
D

Dreamlander

Gast
Gleich vorneweg: Ich habe keinerlei Ahnung von Java, brauche das aber hier anscheinend, um in einem Programm etwas hinzuzufügen.

In der Installationsanleitung steht nun
In that directory, invoke the Java compiler with this command:
javac -classpath *.jar -d . *.java
Das habe ich schon versucht, aber es geht nicht. Anmerkung: JDK ist installiert!

Wie gesagt: wie mache ich das nun oder was ist an dem Befehl falsch?
 
Bist du im richtigen Ordner? Kennt Windows in der Kommandozeile den Befehl als allgemeingültiger Befehl?
 
Oeffne die .java Datei mal mit dem JOE Editor und drueck oben in der Leiste das Zahnrad ( http://www.javaeditor.de/ ).
 
Ich bin im Ordner von dem Programm, dem ich etwas hinzufügen will. Das ist laut Anleitung der richtige Ordner. In der Eingabeaufforderung steht "Der Befehl javac ist entweder falsch geschrieben oder konnte nicht gefunden werden".


... ah, Einfall. Vielleicht muss ich ja die ganzen Dateien im Ordner mit der javac-Datei haben und dann den Befehl ausführen?
*test*
Jo ... jetzt hat es geklappt. Jedenfalls wurde der Befehl erfolgreich ausgeführt.


ABER: Eigentlich wollte / soll ich die *.java-Dateien zu dem '.jar-Archiv hinzufügen. Das hat mit dem Befehl leider nicht geklappt. Ich nehme aber an, dass es eher am Inhalt (Code) der *.java-Dateien liegt als am Befehl selbst.
Wenn ich nämlich nach dem ausgeführten Befehl das '.jar-Archiv entpacke, sind die '.java-Dateien nicht enthalten, auch nicht als *.class.
Wie mache ich denn das? Bzw. wie kann ich aus Dateien in mehreren Ordnern eine *.jar-Datei erstellen?


[Edit by me]
Also wie ich eine *jar-Datei habe ich so eben herausgefunden und es klappt zwar auch sie zu erstellen, aber sie ist nicht funktionsfähig. Das Programm kann nicht gestartet werden :-(
Ich bekomme immer die Fehlermeldung "Failed to load Main-Class manifest attribute".
 
Reicht's, wenn ich den Link poste?

Hier mal beispielhast der Inhalt einer Datei:
/*
* Created on 10/10/2004
*
*/
package net.sf.jabref.export.layout.format;

import net.sf.jabref.export.layout.LayoutFormatter;

/**
* Replaces each and with a ";" for any number of Authors
*
* @author Stephen Doxsee
*/
public class AuthorAndsSemicolonReplacer implements LayoutFormatter {

/* (non-Javadoc)
* @see net.sf.jabref.export.layout.LayoutFormatter#format(java.lang.String)
*/
public String format(String fieldText) {

String[] authors = fieldText.split(" and ");
String s;

int i = 0, x = authors.length;
StringBuffer sb = new StringBuffer();

for(i=0;i<x-1;i++) {
sb.append(authors + "; ");
}
sb.append(authors[x-1]);
s = new String(sb);

return s;

}
}
 
Ich frage mich wie du die Datei ueberhaupt uebersetzt bekommst, denn ich bekomme da selbst mit der kompletten Version von JabRef (2.3.1) den Fehler:

Code:
cannot access net.sf.jabref.export.layout.LayoutFormatter

bad class file: xxx\jabref-files\net\sf\jabref\export\layout\LayoutFormatter.class

class file has wrong version 49.0, should be 48.0

Please remove or make sure it appears in the correct subdirectory of the classpath.

import net.sf.jabref.export.layout.LayoutFormatter;

:/
 
Hm, ich hab ja keine genaue Ahnung, was ich mache ;-)

Ich hab erstmal JabRef-2.3.1.jar entpackt. Dann hab ich den Befehl im 1. Post verwendet, um aus den java-Dateien class-Dateien zu erstellen. Die befinden sich praktischerweise gleich in dem Ordner, wo sie auch hinsollen (net\sf\jabref\export\layout\format). Und dann habe ich anschließend alle Dateien von JabRef, plus die gerade erzeugten, wiederum in eine jar-Datei gepackt. Will ich dann JabRef starten, kommt eben die Fehlermeldung "Failed to load Main-Class manifest attribute".
 
Die .class Dateien habe ich jetzt erstellen koennen -> http://rapidshare.com/files/105333864/jabref-files-pcg.rar.html
Was du aber damit machen musst, weisz ich auch nicht ;P
Wenn du den Befehl von oben ausfuehrst, dann muss die JabRef*.jar Datei mit im Verzeichnis sein.
 
Danke auf jeden Fall für Deine Hilfe bisher :top:


Was ich machen will, steht auf dieser Seite et auf der Mitte unter "1. Configuring JabRef".
Ich nehme aber an, dass
a) entweder das Ganze nur für eine ältere JabRef-Version funktioniert oder
b) die Anleitung irgendwie fehlerhaft ist. Denn es bringt mir ja eigentlich nichts, wenn die java-Dateien in class-Dateien umwandle und diese sich dann in irgendwelchen Sub-Subordnern befinden, weil JabRef ja als ausführbare jar-Datei daherkommt. Aber ich habe auch schon versucht, die class-Dateien in diese jar-Datei einzubinden, was zwar funktioniert hat, aber eben zu weiter oben genannten Fehlermeldung führt.


Hintergrund der ganzen Geschichte ist der: ich schreibe an der Uni gerade an einer Arbeit mit anderen zusammen und wir nutzen JabRef als Datenbank. Mit Word 2007 ist es möglich, auf Basis der JabRef-Datenbank, Zitate und ein Literaturverzeichnis zu erstellen. Problem hierbei: unser Prof. will ein ganz spezielles Format, dass Word 2007 nicht hat. Und ich kenne mich nicht mit XML aus und hätte auch nicht die Zeit, um mir ein entsprechendes Format zu schreiben. Alternativ gibt es die Internet-basierte LIteratursoftware RefWorks, die besagtes Format hat. Hier ist wiederum das Problem, dass ich leider nicht aus JabRef nach RefWorks exportieren kann. Es klappt einfach nicht :-( ... und da kommt obiges java-Programm ins Spiel. Das soll mir dieses ermöglichen.
Klingt alles kompliziert, ist aber so ;-)
 
Theoretisch schon, aber ich arbeite ja im Team und die anderen nutzen alle Word. Sowieso alle am Institut, was mich doch gewundert hat zu Beginn. Und da wir uns ständig austauschen müsse bzw. jeder einen Teil der Arbeit schreibt und wir die komplette Arbeit am Ende drucken wollen, geht das wohl nicht, oder?
Weiterhin ist es so, dass nicht glaube, die Zeit zu haben, um mich in LaTeX einzuarbeiten. Jedenfalls nicht bis Mitte Mai, wenn wir die Arbeit abgeben müssen.
 
Dreamlander am 07.04.2008 15:34 schrieb:
Theoretisch schon, aber ich arbeite ja im Team und die anderen nutzen alle Word. Sowieso alle am Institut, was mich doch gewundert hat zu Beginn. Und da wir uns ständig austauschen müsse bzw. jeder einen Teil der Arbeit schreibt und wir die komplette Arbeit am Ende drucken wollen, geht das wohl nicht, oder?
Weiterhin ist es so, dass nicht glaube, die Zeit zu haben, um mich in LaTeX einzuarbeiten. Jedenfalls nicht bis Mitte Mai, wenn wir die Arbeit abgeben müssen.
Ach das ist in ein paar Stunden erledigt. Am besten lernt man es wenn man gleich weiß welchen Text man schreiben will, und sich dann die Befehle die einem fehlen raus sucht.
 
Dreamlander am 06.04.2008 21:58 schrieb:
a) entweder das Ganze nur für eine ältere JabRef-Version funktioniert oder
b) die Anleitung irgendwie fehlerhaft ist. Denn es bringt mir ja eigentlich nichts, wenn die java-Dateien in class-Dateien umwandle und diese sich dann in irgendwelchen Sub-Subordnern befinden, weil JabRef ja als ausführbare jar-Datei daherkommt. Aber ich habe auch schon versucht, die class-Dateien in diese jar-Datei einzubinden, was zwar funktioniert hat, aber eben zu weiter oben genannten Fehlermeldung führt.

Du kannst die .jar Datei mit WinRAR oeffnen (nicht entpacken!) und die .class Dateien in den selben Pfad in der .jar kopieren ("net\sf\jabref\export\layout\format").
 
klausbyte am 07.04.2008 16:33 schrieb:
Ach das ist in ein paar Stunden erledigt. Am besten lernt man es wenn man gleich weiß welchen Text man schreiben will, und sich dann die Befehle die einem fehlen raus sucht.
Ich glaube, ich muss es mir auf jeden Fall einmal installieren und angucken. Ich habe ja schon öfters mit dem Gedanken darüber gespielt, aber weil niemand den ich kenne LaTeX benutzt, habe ich es bisher nicht ausprobiert. Wie sieht es denn bei einem Austausch oder so aus? Kann man LaTeX-Dokument in Word-Dokumente umwandeln?

Vielleicht benutze ich ja LaTeX für meine Bachelorarbeit, denn an der arbeite ich dann alleine :-)



The_Linux_Pinguin am 07.04.2008 17:49 schrieb:
Du kannst die .jar Datei mit WinRAR oeffnen (nicht entpacken!) und die .class Dateien in den selben Pfad in der .jar kopieren ("net\sf\jabref\export\layout\format").
Du bist super! :-X
So klappt es endlich. Ich hatte es ja zwar auf Umwegen selbst versucht (*.jar entpacken -> *.class in den richtigen Ordner packen -> alles wieder in *.jar umwandeln), aber da hatte es nicht funktioniert.

Einziges Problem: Der Quellcode macht nicht ganz das, was er soll, aber ich glaube, dass kann ich selbst beheben. Jetzt erhol ich mich aber erstmal von meiner heutigen Meniskus-OP.

Vielen Dank nochmal!
 
Zurück