Bad class file in *.jar

huckleberry

Bekanntes Mitglied
Hallo,

ich habe ein Projekt myProject. Dann habe ich eine Klasse MeineClasse.java.
In dieser Klasse Versuche ich ein TestClasse() zu instantiieren, welche in einem extern.jar liegt (es ist nicht meine jar, und inliegende Klassen als kompilierte *.class).

Die TestClasse() liegt in der jar in ähnlicher paketstruktur:
Java:
ebene1.ebene2
Weiterhin gibts da eine Paketstruktur:
Java:
impl.aa
impl.ab
impl.ac
impl.ad
impl.ae
impl.af
impl.ag
impl.ah
//.. etc.

Bei dem Versuch die
Java:
TestClasse testClass = new TestClasse() ;

[javac] C:\path\myProject\src\de\paket\MeineClasse.java:68: cannot access impl.ah
[javac] bad class file: impl\ah.class(impl:ah.class)
[javac] class file contains wrong class: impl.aH
[javac] Please remove or make sure it appears in the correct subdirectory of the classpath.
[javac] TestClasse testClass = new TestClasse() ;
[javac] ^
[javac] 1 error

Was soll ich machen?

Danke! Huck
 
Zuletzt bearbeitet:
M

Marcinek

Gast
Dann muss die Klasse auch in dem Verzeichnis liegen.

Jedes Paket ist ein Verzeichnis.
 

huckleberry

Bekanntes Mitglied
Dann muss die Klasse auch in dem Verzeichnis liegen.
Ja, wenn ich die jar entpacke, gibts dort in dem Ordner impl eine Klasse ah.class.

Wenn ich zB in meiner Source:
Java:
import impl.ah;
machen möchte, schlägt er mir
Java:
import impl.aH;
vor. (mit großem H)

Wobei dann das impl.aH : The import impl.aH cannot be resolved

Und impl.ah :
[javac] bad class file: impl\ah.class(impl:ah.class)
[javac] class file contains wrong class: impl.aH
[javac] Please remove or make sure it appears in the correct subdirectory of the classpath.
[javac] import impl.ah;
 

huckleberry

Bekanntes Mitglied
Dateipfad: /CommHandler/src/de/myModul/messages/MeineClasse .java
Java:
package de.myModul.messages;

import de.controller.communication.http.TestClasse;

public class MeineClasse {
	
	private static final Logger 	LOG = LoggerFactory.getLogger();
	private static TestClasse 	_current_Message; //Object aus der externen.jar
	


	public MeineClasse() {		
		LOG.logInfo("MessageHandler attempt: ");		
        //MessageHandler
		MeineClasse._current_Message = new TestClasse();		
		LOG.logInfo("TestClasse _current_Message success!");
        }

	public static TestClasse get_current_Message() {
		return _current_Message;
	}
}
 
M

Marcinek

Gast
Dann verstehe ich das nicht =(

Ohne die Infos, wie es implementiert ist, kann ich nicht helfen.
 

irgendjemand

Top Contributor
alleine an den namen fällt auf : OBFUSCATOR ! ... und die arbeiten meist auf bytecode ebene wo so einige dinge möglich sind die im source eben nicht möglich sind und zu compilerfehlern führen ...

der obfuscator hat die klasse von außen nun mal unzugänglich gemacht ... in dem das file ah.class heißt ... aber die enthaltene klasse aH ...
auf bytecode-ebene kann man den caller entsprechend manipulieren das es trotzdem funktioniert ... aber im source und der compiler weigern sich natürlich ...

ich denke mal der code wurde nicht umsonst obfuscated ...
 

huckleberry

Bekanntes Mitglied
Also habe ich folgendes Problem in etwa:
i13288_extern.bmp


Eigentlich interesseirt es mich nicht, was ah oder aH machen. TestClasse hat einen Konstruktor und es sollte selber zusehen, wie es ein Objekt instanziiert, wenn es denn korrekt implementiert wurde..
 
M

Marcinek

Gast
Lade mal die externe JAR hoch, die du benutzt. Oder Link zum Projekt?

Ansonsten könnte es sein, dass es garnicht gedacht ist, dass ein externer diese Klassen instanziiert?
 

irgendjemand

Top Contributor
da du uns bis jetzt leider nichts gepostet hast wo du auf aH zugreifst ... oder überhaupt eine instanz der lib erzeugst ... kann man auch schlecht sehen WELCHE klasse du versuchst zu erzeugen ...

daher mal wieder einer der standard-sprüche : ohne genauere informationen wird man dir nicht helfen können ...
und wenn du irgendwas aus lizenz-technischen gründen nicht veröffentlichen darfst ... warum wendest du dich dann an ein öffentliches forum die diese infos nun mal brauchen ... da wäre es definitiv einfacher gewesen sich dierekt mit dem hersteller der lib in verbindung zu setzen ...

auch mal ne frage : warum versuchst du die angemerkte klasse auch dierekt zu imporiteren ? denn ich denke NICHT das das im sinne desjenigen ist der die lib gebaut hat ... da wird es sicher factory-klassen und entsprechende interfaces geben ...
wie gesagt : der code wurde sicher nicht umsonst so gesichert ...
 

huckleberry

Bekanntes Mitglied
da du uns bis jetzt leider nichts gepostet hast wo du auf aH zugreifst ... oder überhaupt eine instanz der lib erzeugst ...

Äh doch, hier http://www.java-forum.org/java-basics-anfaenger-themen/135225-bad-class-file-jar.html#post890667:
Richtig, diese benutze ich auch net.
Jedoch liegt diese in der selben jar wie TestClasse und ich könnte mit vorstellen, dass der Kontruktor von TestClasse() die aH.class welches im package impl liegt, selbst irgendwann benutzt ???:L

ah.class und aH.class benutze ich selbst (in meiner MeineClasse.java) nicht. Diese wird wenn überhaupt von der TestClasse (TestClasse.class in der extern.JAR) verwendet.
Und solch ein TestClasse Objekt wird von mir instanziiert.

Ich selbst erzeuge hier ein Objekt der lib:
http://www.java-forum.org/java-basics-anfaenger-themen/135225-bad-class-file-jar.html#post890661
Dateipfad: /CommHandler/src/de/myModul/messages/MeineClasse .java
Java:
package de.myModul.messages;

import de.controller.communication.http.TestClasse;

public class MeineClasse {
	
	private static final Logger 	LOG = LoggerFactory.getLogger();
	private static TestClasse 	_current_Message; //Object aus der externen.jar
	


	public MeineClasse() {		
		LOG.logInfo("MessageHandler attempt: ");		
        //MessageHandler
		MeineClasse._current_Message = new TestClasse();		
		LOG.logInfo("TestClasse _current_Message success!");
        }

	public static TestClasse get_current_Message() {
		return _current_Message;
	}
}
 

huckleberry

Bekanntes Mitglied
GELÖST:

die JAR enthielt anfangs
aa.class
aA.class
ab.class
aB.class
ac.class
aC.class
etc...

als ich die JAR anfangs entpackt habe, hat jar.exe jeweils das zweite a[kleinerBuchstabe].class mit a[großerBuchstabe].class überschrieben. Deswegen fand er die entsprechende Klasse nicht.
 

irgendjemand

Top Contributor
*facepalm*

unter unix hätte es damit keine probleme gegeben ... denn unix ist auch im dateisystem case-sesitive ...

warum du allerdings auf die idee gekommen bist eine obfuscated lib , welche nun mal mit gleichen namen gegen das entpacken auf windows geschützt ist , zu entpacken würde mich schon mal interessieren ...

es reicht eine lib in den CP aufzunehmen um diese einzubinden -> GRUNDLAGEN !
 

huckleberry

Bekanntes Mitglied
warum du allerdings auf die idee gekommen bist eine obfuscated lib , welche nun mal mit gleichen namen gegen das entpacken auf windows geschützt ist , zu entpacken würde mich schon mal interessieren ...

nur der Paketzweig impl.* war Obfuscated.
alles andere in der JAR ist klar leserlich ..

Es war zwingend erforderlich, dass ich dessen Manifest anpassen musste:
Export-Package: extern.diesunddas; version="1.0.0"
..
Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.0, CDC-1.0/Foundation-1.0
 

irgendjemand

Top Contributor
Es war zwingend erforderlich, dass ich dessen Manifest anpassen musste:

und dafür musst du ein jar entpacken ?

geht einfacher : console auf ... ins verzeichnis vom jar navigieren ... neues manifest daneben legen *also vorher NUR das manifest entpacken* und dann mit [c]jar vuf NAME.jar META-INF/Manifest.mf[/c] das manifest überschreiben ...
man kann sich aber auch umständlicher anstellen als es sein muss wenn man die tools im jdk nicht kennt -.-'
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
B .class-File mit Reflection auslesen Java Basics - Anfänger-Themen 8
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
M Java Class File lässt sich nicht ausführen Java Basics - Anfänger-Themen 3
E Executable jar-file findet class nicht Java Basics - Anfänger-Themen 12
N Jar-File soll externe class-Datei benutzen Java Basics - Anfänger-Themen 8
A Compile the Source File into a .class File Java Basics - Anfänger-Themen 3
G Class File "lesen" Java Basics - Anfänger-Themen 4
M class-File anschauen möglich? Java Basics - Anfänger-Themen 8
B bad class file Java Basics - Anfänger-Themen 2
N Class-Objekt aus File-Objekt erzeugen? Java Basics - Anfänger-Themen 14
G "bad class file" Problem Java Basics - Anfänger-Themen 13
S methode in class file ansprechen? Java Basics - Anfänger-Themen 6
T IntelliJ / SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". Java Basics - Anfänger-Themen 4
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
123456789sssssaaaa Java Wrapper Class Java Basics - Anfänger-Themen 13
FHEFHJHFJH error: class names, 'summe_bsp', are only accepted if annotation processing is explicitly requested Java Basics - Anfänger-Themen 3
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J Methode als Class anlegen Java Basics - Anfänger-Themen 7
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
G Could not initialize class “NoClassDefFoundError" Java Basics - Anfänger-Themen 2
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H .class Datei wird nicht ausgeführt Java Basics - Anfänger-Themen 2
H .jar unterschied .class Java Basics - Anfänger-Themen 3
J class version 52 und 56 Java Basics - Anfänger-Themen 6
L Fehler bei der AUsführung der .class Datei Java Basics - Anfänger-Themen 23
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
R HTTP-Links in Java Class finden Java Basics - Anfänger-Themen 3
D jsoup get class name mit leerzeichen Java Basics - Anfänger-Themen 7
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
N Fehlende .class Datei Java Basics - Anfänger-Themen 4
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
W Externe class in Eclipse importieren Java Basics - Anfänger-Themen 0
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
wilmaed protected class Java Basics - Anfänger-Themen 0
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
N class in class Java Basics - Anfänger-Themen 13
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
D Compiler-Fehler error: .class expected Java Basics - Anfänger-Themen 2
S Dataflow von Start bis die SystemProperties class Java Basics - Anfänger-Themen 1
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
M Scanner class Java Basics - Anfänger-Themen 6
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
P Compiler-Fehler Could not load or find main class fehler Java Basics - Anfänger-Themen 15
J Gestaltung der GUI.class Java Basics - Anfänger-Themen 1
P Compiler-Fehler could not find or load main class Java Basics - Anfänger-Themen 5
Z Gleiches Verzeichnis für class und java unter Windows Muss? Java Basics - Anfänger-Themen 11
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
J Erste Schritte .class datei in meine form inkludieren Java Basics - Anfänger-Themen 3
O Objekt weitergeben Meth Class NullPointerException Java Basics - Anfänger-Themen 2
M Class Datein aus einen Unterordner verwenden Java Basics - Anfänger-Themen 2
C class in main aufrufen (SWT Oberfläche) Java Basics - Anfänger-Themen 5
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
D error: Class names, >>>HILFE, anfänger<<< Java Basics - Anfänger-Themen 4
M Class nach Namensänderung nicht mehr vorhanden Java Basics - Anfänger-Themen 6
P .class 2 .exe ? Java Basics - Anfänger-Themen 5
N Compiler-Fehler HundTestlauf class Fehler Java Basics - Anfänger-Themen 4
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
H Umgebungsvariable In DOS-Box läuft die fehlerfreie Class-Datei nicht. Java Basics - Anfänger-Themen 5
J Compiler-Fehler bootstrap class path not set in conjunction with -source 1.6 Java Basics - Anfänger-Themen 2
J Interface compatible to a class Java Basics - Anfänger-Themen 7
Phil42 "Local variable i is accessed from within inner class" Java Basics - Anfänger-Themen 3
F .class expected Java Basics - Anfänger-Themen 3
S Erste Schritte Ausführen einer Class Datei Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben