Ich habe ein Programm, das in der Lage sein muss, eine ausführbare JAR-Datei von sich selbst zu erstellen, aber ich habe leider einige Schwierigkeiten, damit es funktioniert. Dies ist die Methode, die ich zur Zeit bin mit der JAR-Datei zu erstellen:Erstellen JAR des Programms selbst
public static void createJar() throws IOException {
Manifest manifest = new Manifest();
manifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
manifest.getMainAttributes().put(Attributes.Name.MAIN_CLASS, "JarTest");
JarOutputStream jos = null;
try {
String jarPath = System.getProperty("user.dir") + "/Test.jar";
jos = new JarOutputStream(new FileOutputStream(jarPath), manifest);
}
catch (IOException e) {e.printStackTrace();}
ArrayList<String> fileList = new ArrayList<String>();
String codeDir = System.getProperty("user.dir") + "/bin/jartest/";
Files.list(Paths.get(codeDir)).forEach(entry -> {
fileList.add(((Path)entry).toString());
});
int len = 0;
byte[] buffer = new byte[1024];
for(String file : fileList) {
//create JarEntry
JarEntry je = new JarEntry(file);
je.setComment("Creating Jar");
je.setTime(Calendar.getInstance().getTimeInMillis());
System.out.println(je);
jos.putNextEntry(je);
//write the bytes of file into jar
InputStream is = new BufferedInputStream(new FileInputStream(file));
while((len = is.read(buffer, 0, buffer.length)) != -1)
jos.write(buffer, 0, len);
is.close();
jos.closeEntry();
System.out.println("Done");
}
jos.close();
}
Wenn ich ausführen dieses keine Fehler passieren, und ich habe eine JAR-Datei erhalten namens „test.jar“ erzeugt in meinem Eclipse-Projektordner. Aber wenn ich die JAR öffnen sich die .class-Dateien gibt es nicht, stattdessen sehe ich:
Ich weiß, dass es die .class-Dateien, da die Linie der Suche nach System.out.println(je);
erfolgreich druckt den absoluten Pfad von jedem sie, warum werden sie nicht in die JAR gesteckt?
Es, dass eine Art von Übung? Warum nicht das JAR-Tool verwenden? – Henry
Es ist eine Übung, um ein sich selbst replizierendes Programm, wie einen Computerwurm, zu erstellen. –
Wenn Sie 'jar tvf Test.jar' verwenden, werden erwartete Einträge und Größen angezeigt? –