Wie kann ich auf eine Klasse in einer .jar-Datei zugreifen?

Ich habe eine .jar-Datei in den Buildpath eines java-Projekts gesetzt. Die jar-Datei heißt triangle und sie enthält eine Klasse:

Trinagle.class

Diese Klasse hat eine einzige Methode print():


System.out.prntln("Ich bin ein Dreieck.");

}

Dann habe ich in demselben package noch eine Mainklasse:

package core;

public class Main {

	public static void main(String[] args) {
				
		Triangle t = new Triangle();
		
		//t.print();

	}
}

Leider kann er die Klasse Triangle nicht finden - was muss ich also tun, damit ich die Klasse instanziieren kann?

Eigentlich reicht es, sie zum classpath hinzuzufügen - falls es das schon war, was du mit “Buildpath” meintest, solltest du ggf. sagen, welche IDE du verwendest, was genau du gemacht hast, und wie genau sich der Fehler äußert.

Moin,

wenn ich Dich richtig verstehe, reicht es doch die entsprechende java-Datei zu importieren !

import <packagePath>.Triangle;

Gruß
Klaus

Damit der Import funktioniert, muss Triangle allerdings in einem package liegen.
Diese package Struktur muss auch in einem jar File abgebildet sein.

Wenn die Jar im Classpath eingetragen ist und du eine IDE nutzt, sollte der import auch von selbst von der IDE hinzugefügt werden, bzw. anzeigen das du die Klasse importieren musst (je nach IDE)

Den Import braucht man nicht, wenn die Klassen (wie gesagt wurde) im selben package liegen.

Die jar liegt im selben package wie meine Mainklasse.

Dennoch kann ich - auch ohne import - Triangle nicht instanziieren. Ich benutze eclipse, und da liegt die jar schon im Classpath.

Die jar enthält eine Klasse Triangle.class

Der Fehler lautet: “Triangle cannot be resolved to a type”.

Kannst du das Programm (die main) ausführen ausserhalb von dem Jar?

Unabhängig von dem Ort des Jar-Files kann die Klasse Triangle durchaus noch in einem anderen Package liegen (wenn in der Klasse ein Package angegeben ist, à la package math.primitives.shapes;.

Ich habe die jar aber in das Package hineingepastet wo auch meine Mainklasse is, also daran kann es eigentlich nicht liegen.

Edit: ich habe alles ins default-Package gesetzt, nun ging es. Grund war wohl folgender. Ich habe die Klasse Triangle außerhalb von eclipse kompiliert und auch die richtige package-Bezeichnung mitgegeben, die konnte aber offenbar nicht erkannt werden.

Jetzt ging es!

lade doch mal die jar hoch oder zeige den kompletten Inhalt der dort enthaltenen Klasse.
Ein Screenshot des package-Explorers kann auch nicht schaden.

Zeig vor allem mal den Quellcode der Triangle Klasse

Moin,

das sollte in Eclipse etwa so aussehen:

Viele Grüße
Fancy