Question

Je veux une sorte de minimes "test des fumées" pour une série de machines virtuelles, allant de JDK 1 - 8, OpenJDK, IBM JDK, et même Microsoft Jdk si possible.Est-il un moyen de faire un minimum de fichier de classe Java doit être en mesure de tester cela?

Mise à jour

Il devrait être possible de lancer:

java -cp ClassName

Et de sortie qui confirme que la machine fonctionne correctement.

Aussi, pour ceux qui pensent que les machines virtuelles sont toujours en fonctionnement, il faut savoir que je utiliser des systèmes qui ont jusqu'à 20 machines virtuelles sur une seule machine, et certains de la Jvm peut être endommagé.Notez également que toutes les machines virtuelles peuvent exécuter tous .les fichiers de classe

Était-ce utile?

La solution

krakatau a Un exemple de fichier astribler pour le fichier de classe minimal.

.class public minimal
.super java/lang/Object

Cela vous donnera le fichier de classe le plus simple possible qui va charger dans la JVM. Il ne dispose pas de toutes les métadonnées facultatives que vous obtiendrez généralement d'autres outils (Jasmin, par exemple, ajoute toujours un attribut SourceFile). Ce n'est pas le fichier le plus court possible car vous pouvez vous raser quelques octets en raccourcissant le nom de la classe, mais c'est fondamentalement la classe la plus simple possible.

Notez que pendant que cette classe se chargera, il ne contient aucun code pour que vous ne puissiez pas utiliser de manière significative exécuter it. Si vous voulez quelque chose que vous pouvez exécuter comme point d'entrée, vous devrez ajouter une fonction principale. Cela peut être fait en adaptant le Exemple Hello World pour supprimer le code d'impression.

.class public Code
.super java/lang/Object

.method public static main : ([Ljava/lang/String;)V
    .limit stack 10
    .limit locals 10

    return
.end method

Cela vous donnera une classe qui est courante et qui revient immédiatement. C'est donc la classe la plus simple possible avec une fonction principale.

Autres conseils

L' Kit De Compatibilité Java (JCK) est développé pour cet objectif précis.Un minimum de pot ne serait pas suffisant pour vérifier la JVM du bien-fondé il y a beaucoup de cas de coin de la couverture et de toute combinaison de code octet instructions doivent être pris en charge.

Si vous avez simplement voulu vérifier si un programme minimal pistes, de compiler une classe simple avec un vide main méthode à une classe Java format de fichier dans la version 1.En raison de Java de la rétro-compatibilité, ce doit être compréhensible par toute la JVM et la JVM doit sortir avec le code d'état 0.

Toute classe ayant une méthode principale peut exécuter sur n'importe quel JVM, cela peut être le cas minimal de test, par exemple:

class Hello {
    public static void main (String args[])
    {
        System.out.println("hello");
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top