Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Entwickler>Java und externe Bibliotheken

Java und externe Bibliotheken

blablub07.05.0620:34
Hallo,

ich setze mich gerade mit Java auseinander.Ich habe eine Bibliothek in meine Klasse importiert. Doch wenn ich das compilieren möchte funktioniert das nicht. Die Bibliothek befindet sich in ein anderem Verzeichnis als meine geschriebene Klasse, dh.

MeineKlasse befindet sich:
Desktop/meineKlassenVerzeichnis/MeineKlasse.java

Die Bibliotheken befindet sich:
Desktop/meineBibliotheke/KlassenBibliothek/...class

Wie compiliere ich jetzt das Ganze?

Mein Versuch im Terminal:
javac -classpath /Users/Binich/Desktop/meineBibliotheke/KlassenBibliothek/ MeineKlasse.java

Ausgangsverzeichnis (wo ich mich im Terminal befinde):
meineKlassenVerzeichnis

Leider gibt er mir zwei Errormeldungen, die sich auf das import der Bibliothek beziehen.

HILFE
0

Kommentare

MacMark
MacMark07.05.0620:52
Verzeichnisse gehen nicht. Entweder gibst Du einzelne Klassen und/oder JARs an.
„@macmark_de“
0
blablub07.05.0620:59
und was mache ich wenn ich mehre Bibliotheken habe, die ich benötige ?
0
Rantanplan
Rantanplan07.05.0621:09
Verzeichnisse gehen schon, aber nur dann, wenn da drin .class-Dateien liegen, nicht jars. Die jars muß man einzeln angeben, entweder mit einer -classpath und die jars mit Semikolon getrennt oder mehrere -classpath. Steht aber alles in der Dokumentation, die im übrigen sehr gut gemacht ist. Ein Blick da rein ist wärmstens zu empfehlen.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
MacMark
MacMark07.05.0621:11
blablub
und was mache ich wenn ich mehre Bibliotheken habe, die ich benötige ?

Dann gibst Du sie alle an.
„@macmark_de“
0
blablub07.05.0621:15
supi Rantanplan.
Ich habe nämlich eine *.class Dateien in dem Verzeichnis. Ich habe auch, wie oben beschrieben, das Verzeichnis angeben, aber er gibt mir in meine Klasse beim "import" und bei der Klasse die ich verwende eine Fehlermeldung. Bitte seid lieb zu. Das ist mein erstes Programm
0
smile
smile07.05.0621:21
hmm, poste doch mal die Fehlermeldungen und am besten die Package und Verzeichnisnamen. Alles andere ist Raterei.
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
Rantanplan
Rantanplan07.05.0621:34
blablub

Also ich kann dir versichern: als ich das erste Mal versucht habe ein etwas ausgedehntes Projekt mit Packages, Jars und Verzeichnishierarchien zu kompilieren, habe ich mehr als nur einmal in die Tischplatte gebissen.

Das Verzeichnis im -classpath ist ok, wenn da ein .class-File drin liegt, soweit so gut. Allerding: wenn das zu einem Package gehört (steht ja ganz oben im .java), dann muß das von diesem Verzeichnis ausgehend in dem entsprechenden Unterverzeichnis liegen, sonst geht da nix. Wenn es ohne Package ist, dann sollte das schon so richtig sein. Die Jars muß man alle einzeln angeben, bzw. wie gesagt mit Semikolon getrennt in einer Option.
„Wenn ich nicht hier bin, bin ich auf dem Sonnendeck“
0
blablub07.05.0621:45
muss eigentlich bei der import "Anweisung" der Pfad von der *.class Datei ?
0
blablub07.05.0621:49
Das ist die Fehlermeldung:

import abc.prog1.bib.clockman.*;
^
UebClockman.java:22: cannot access Clockman_Frame
bad class file: /Users/blablub/Desktop/abc/prog1/bib/clockman/Clockman_Frame.class
class file contains wrong class: abc.prog1.bib.clockman.Clockman_Frame
Please remove or make sure it appears in the correct subdirectory of the classpath.
Clockman_Frame meinClockman;
^
2 errors
0
blablub07.05.0621:53
Mein pwd: localhost:~/Desktop/abc/prog1/le04 blablub$

Eingabe:
javac -classpath /Users/blablub/Desktop/abc/prog1/bib/clockman/ UebClockman.java
0
blablub07.05.0622:23
das wohl nicht. Also ich habe jetzt
import Users.blablub.Desktop.abc.prog1.bib.clockman.*;
geschrieben, doch leider funktioniert das nicht. Gleiche Fehlermeldung *beiss in die Tischkante
0
smile
smile08.05.0600:23
du kannst im Packagenamen beim Import nicht schreiben was du willst. Wenn eine Klasse Teil des Paketes com.foo.bar ist, wird das in der Klasse als Deklaration auch angegeben:

package com.foo.bar;

Dann *muss* der Import als

import com.foo.bar.*; oder
import com.foo.bar.Klassenname;

angegeben werden. Ebenso *muss* die Verzeichnisstruktur

com/foo/bar/Klassenname.class

sein. Alternativ kann com/foo/bar/Klassenname.class in einem .jar File (das ist am Ende ein normales .zip mit anderer Endung) sein.

Achtung: die drei Angaben müssen unbedingt übereinstimmen, sonst wird das nix.
„Deinen Mac kannst du lieben oder hassen - Dein PC wird Dir immer scheißegal sein.“
0
blablub08.05.0602:41
Oh man, jetzt habe ich mir eclipse herunter geladen doch leider funktioniert es dort nicht.

seaside, ich würde dir gern meine Datei geben, doch leider hab ich es zu spät gesehen. Vielleicht bist Du morgen im iChat. sag bescheid, dann komme ich auch.
0
blablub08.05.0621:43
Okay, ich bin da
0
blablub09.05.0600:01
Wollte mich nochmals an alle bedanken und besonders an seaside
0
Frank
Frank07.05.0621:13
Vielleicht solltest du über eine IDE wie NetBeans oder Eclipse nachdenken. Die nimmt dir nämlich ganau diese arbeit ab. Weiterhin erzeugen die auch sehr einfach .jar-Files, die du in jedem Betriebssystem mit doppelclick starten kannst.
0
seaside07.05.0621:06
MacMark<br>
Verzeichnisse gehen nicht. Entweder gibst Du einzelne Klassen und/oder JARs an.

Warum sollten Verzeichnisse funktionieren?
0
seaside07.05.0621:07
blablub<br>
und was mache ich wenn ich mehre Bibliotheken habe, die ich benötige ?

Könntest Du das bitte etwas näher spezifizieren? Was wird nicht gefunden? Klassen deiner Bibliothek oder Klassen der Java Standard Bibliotheken?
0
seaside07.05.0621:55
blablub<br>
Das ist die Fehlermeldung:

import abc.prog1.bib.clockman.*;

Dann sollte die Verzeichnisstruktur

$root
abc
prog1
bib
clockman

lauten. Ist das der Fall? Wie vorher beschrieben, muss die Verzeichnisstruktur stets der package Struktur entsprechen.
0
seaside08.05.0600:13
blablub<br>
das wohl nicht. Also ich habe jetzt
import Users.blablub.Desktop.abc.prog1.bib.clockman.*;
geschrieben, doch leider funktioniert das nicht. Gleiche Fehlermeldung *beiss in die Tischkante

Wenn's nicht gerade was geheimes ist, dann schick's mir zu. Ich werfe gerne einen Blick drauf.

iChat läuft
0
seaside08.05.0600:15
blablub<br>
das wohl nicht. Also ich habe jetzt
import Users.blablub.Desktop.abc.prog1.bib.clockman.*;
geschrieben, doch leider funktioniert das nicht. Gleiche Fehlermeldung *beiss in die Tischkante

Mach mal einen Screenshot der Finder Odner-Ansicht (hierarchisch). Dann kann man mehr sehen.
0
seaside08.05.0600:38
smile<br>
Achtung: die drei Angaben müssen unbedingt übereinstimmen, sonst wird das nix.

Ja, habe ich ja auch schon geschrieben, etwas weniger exakt allerdings. Schon komisch, dass es Probleme gibt..
0
seaside08.05.0600:57
Wenn der Folder so aussieht...
0
seaside08.05.0601:00
Dann wird per

>>>
javac -classpath libs jt.java
<<<

das File jt.java fehlerfrei übersetzt:

>>>
import alloy.com.incors.plaf.*;

class jt {
public static void main(String[] args) {
}
}
<<<
0
seaside08.05.0601:03
Wenn Dein Projekt etwa so aussieht...
0
seaside08.05.0601:05
Dann übersetzt

>>>
javac -classpath libs/alloy.jar jt.java
<<<

das Programm

>>>
import com.incors.plaf.*;

class jt {
public static void main(String[] args) {
}
}
<<<

fehlerfrei.

0
seaside08.05.0621:28
blablub<br>
Oh man, jetzt habe ich mir eclipse herunter geladen doch leider funktioniert es dort nicht.

seaside, ich würde dir gern meine Datei geben, doch leider hab ich es zu spät gesehen. Vielleicht bist Du morgen im iChat. sag bescheid, dann komme ich auch.

iChat läuft. Melde Dich einfach...
0
seaside09.05.0600:09
Gerne!
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.