Frage

Ich möchte eine Art Minimal "Rauchtest" für eine Reihe von JVMs, von JDK 1 bis 8, OpenJdk, IBM JDK und sogar Microsoft JDKs, wenn möglich.Gibt es eine Möglichkeit, eine minimale Java-Klassendatei zu erstellen, die dies testen kann?

UPDATE

Es sollte möglich sein:

java -cp classname

und haben die Ausgabe, die bestätigt, dass der JVM ordnungsgemäß ausgeführt wird.

auch für diejenigen, die der Meinung sind, dass JVMS immer funktioniert, sollten wissen, dass ich Systeme verwende, die bis zu 20 JVMs auf einer Maschine verfügen, und einige der JVMs können beschädigt werden.Beachten Sie auch, dass nicht alle JVMS alle .class-Dateien ausführen können

War es hilfreich?

Lösung

krakatau hat ein Beispiel Aseembler-Datei für den minimalen Klassifizieren.

generasacodicetagpre.

Hiermit geben Sie den einfachsten Klassenfeld, der in der JVM laden wird. Es verfügt nicht über alle optionalen Metadaten, die Sie normalerweise von anderen Tools erhalten, (Jasmin zum Beispiel fügt immer ein SourceFile-Attribut hinzu). Dies ist nicht die kürzeste mögliche Datei, da Sie ein paar Bytes rasieren können, indem Sie den Klassennamen verkürzen, aber es ist im Grunde die einfachste mögliche Klasse.

Beachten Sie, dass, während diese Klasse lädt, kein beliebiger Code enthält, sodass Sie nicht sinnvoll nicht sinnvoll sind. Wenn Sie etwas möchten, das Sie als Einstiegspunkt ausführen können, müssen Sie eine Hauptfunktion hinzufügen. Dies kann durch Anpassung der Hallo World ein Beispiel, um den Druckcode zu entfernen.

generasacodicetagpre.

Dies gibt Ihnen eine Klasse, die ausgeführt ist und die sofort zurückkehrt. Es ist also die einfachste mögliche Klasse mit einer Hauptfunktion.

Andere Tipps

Die Java-Kompatibilitäts-Kit (JCK) wird für diesen genauen Zweck entwickelt.Ein minimales Glas wäre nicht ausreichend, um die Richtigkeit einer JVM-Implementierung zu überprüfen, da viele Eckfälle abdecken, und jede Kombination von Byte-Code-Anweisungen muss unterstützt werden.

Wenn Sie einfach überprüfen wollten, ob ein minimales Programm ausgeführt wird, kompilieren Sie eine einfache Klasse mit einer leeren main-Methode in einem Java-Klassendateiformat in Version 1. Aufgrund der Rückwärtskompatibilität von Java sollte dies von jedem JVM und dem JVM verständlich seinsollte mit dem Statuscode generell attraktivetagcode kommen.

Jede Klasse, mit der eine Hauptmethode auf einem beliebigen JVM ausgeführt wird, kann dies der minimale Fall sein, um zu testen, z. B.:

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top