Ich habe ein Java-Projekt mit einer Symbolleiste, und die Symbolleiste enthält Symbole. Diese Symbole werden in einem Ordner mit dem Namen resources/gespeichert, so dass der Pfad beispielsweise "resources/icon1.png" lautet. Dieser Ordner befindet sich in meinem src-Verzeichnis. Wenn er kompiliert wird, wird der Ordner in bin/Wie auf Ressourcen in JAR-Datei zugreifen?
kopiert. Ich verwende den folgenden Code, um auf die Ressourcen zuzugreifen.
protected AbstractButton makeToolbarButton(String imageName, String actionCommand, String toolTipText,
String altText, boolean toggleButton) {
String imgLocation = imageName;
InputStream imageStream = getClass().getResourceAsStream(imgLocation);
AbstractButton button;
if (toggleButton)
button = new JToggleButton();
else
button = new JButton();
button.setActionCommand(actionCommand);
button.setToolTipText(toolTipText);
button.addActionListener(listenerClass);
if (imageStream != null) { // image found
try {
byte abyte0[] = new byte[imageStream.available()];
imageStream.read(abyte0);
(button).setIcon(new ImageIcon(Toolkit.getDefaultToolkit().createImage(abyte0)));
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
imageStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} else { // no image found
(button).setText(altText);
System.err.println("Resource not found: " + imgLocation);
}
return button;
}
(imagename wird "resources/icon1.png" usw. sein). Dies funktioniert gut, wenn Sie in Eclipse ausgeführt werden. Wenn ich jedoch ein ausführbares JAR aus Eclipse exportiere, werden die Symbole nicht gefunden.
Ich habe die JAR-Datei geöffnet und der Ressourcenordner ist da. Ich habe alles versucht, den Ordner verschoben, die JAR-Datei geändert usw., aber ich kann die Symbole nicht sehen.
Weiß jemand, was ich falsch mache?
(Als Nebenfrage, gibt es einen Dateimonitor, der mit JAR-Dateien arbeiten kann? Wenn Pfadprobleme auftreten, öffne ich FileMon normalerweise, um zu sehen, was passiert, aber in diesem Fall wird nur die JAR-Datei angezeigt)
Danke.
Also 5 Zeilen Code zum Laden des Symbols ist besser, dann 2 Zeilen Code?Um das Geheimnis der Verwendung von zwei Codezeilen zu finden, müsste man natürlich selbst etwas lesen. Ich denke, das Geheimnis wird verborgen bleiben. – camickr