2009-08-18 4 views
0

In einem NetBeans Mobility-Projekt wird eine ZIP-Datei in den Ordner Ressourcen angeschlossen haben,kompilierte Jar-Datei enthält überschüssige Klassendateien

diese Zip-Datei um 10 .class-Dateien enthält.

In meiner Mobilitätsanwendung verwende ich tatsächlich 4 Klassen aus der Zip-Datei, aber wenn ich mein Projekt kompiliere und erstelle, scheint die Zieljar-Datei alle 10 .class-Dateien aus der Zip-Datei zu enthalten.

Ich hatte die Wahrnehmung, dass nur Klassen-Dateien, die von der Anwendung verwendet werden, in den endgültigen Jar kompiliert werden. Was könnte schief gehen?

+1

Woher weiß Netbeans, welche Klassen Sie verwenden? Nach allem, was Sie wissen, könnten Sie reflektiv auf sie zugreifen. –

+0

Weiß der Compiler nicht, dass ich die erforderlichen Klassendateien verwende und nicht die im finalen Jar aufnehmen kann? Ich spreche vom Standpunkt der JAR-Dateigröße. Zum Beispiel, wenn ich eine Zip oder Jar an das Ressourcen-Verzeichnis anfügen, das 100 .class-Dateien enthält, würden alle 100 in die endgültige kompilierte JAR. –

+1

Ja, würden sie. Aber wenn du mit der Reflexion nichts Lustiges machst, sollte die Antwort von izb gut funktionieren. –

Antwort

3

Versuchen Sie, proguard im Jar zu verwenden, um automatisch Klassen zu entfernen, die nicht von Ihrer Midlet-Klasse verwendet werden.

+0

Ich setze die Verschleierungsebene auf "Max", und die JAR-Datei wurde jetzt auf die Hälfte ihrer ursprünglichen Größe reduziert, und selbst die weniger Klassendateien werden in der endgültigen JAR-Datei angezeigt. Aber ich verstehe nicht, warum die Klassen, die ich benutzt habe, nicht in das letzte Glas passen. –

+0

Proguard benennt die Klassen beim Verschleiern und Schrumpfen um. Wenn Sie die Klassennamen beibehalten möchten, verwenden Sie während der Verschleierung das Flag keepattributes. Siehe Proguard-Dokumentation für die verschiedenen Optionen – Ram

0

Ich denke, Sie machen eine falsche Annahme, was Netbeans mit Ihrer angehängten Ressource-Datei tun wird. Es wird nicht automatisch herausfinden, welche Sie verwenden und welche nicht. Es kann jedoch Tools von Drittanbietern geben, die helfen können.