Maison > Java > javaDidacticiel > le corps du texte

Comment résoudre le problème que la méthode main n'est pas définie en Java ?

WBOY
Libérer: 2023-06-25 11:02:57
original
2833 Les gens l'ont consulté

En tant que langage de programmation orienté objet, Java nécessite un point d'entrée lors de l'exécution d'un programme, et ce point d'entrée est la méthode principale. Mais parfois nous rencontrons une situation où la méthode principale n’est pas définie, alors comment la résoudre ?

1. La méthode principale n'est pas définie

L'échec de la définition de la méthode principale peut être dû à des problèmes de modification du code ou d'importation du code d'autres personnes. À ce stade, nous pouvons utiliser la réflexion pour y faire face.

1. Utilisez la réflexion.

Reflection est un mécanisme de base du langage Java qui peut charger, exploiter et interroger des classes et des interfaces pendant l'exécution du programme. Avec la réflexion, vous n'avez pas besoin de connaître toutes les classes et interfaces au moment de la compilation. La machine virtuelle Java (JVM) n'a besoin de charger des classes et des interfaces que lorsque le programme est en cours d'exécution. Par conséquent, le mécanisme de réflexion permet aux programmes Java de charger et d'exploiter dynamiquement des classes et des interfaces au moment de l'exécution.

L'exemple de code est le suivant :

public class NoMainClass {

public void sayHello() {
    System.out.println("Hello");
}
Copier après la connexion

}
public class Main {

public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
    Class<?> clazz = Class.forName("NoMainClass");
    Object o = clazz.newInstance();
    Method method = clazz.getMethod("sayHello");
    method.invoke(o);
}
Copier après la connexion
#🎜🎜 #}

Dans ce code, le programme charge dynamiquement une classe au moment de l'exécution, crée une instance de la classe via la méthode newInstance(), obtient dynamiquement la méthode de cette instance et l'appelle . Voici comment utiliser le mécanisme de réflexion pour charger dynamiquement une classe sans méthode principale et l'exécuter.

2. Utilisez le système de modules Java 9.

Lorsque nous devons utiliser le système de modules Java 9 pour résoudre le problème de la non-définition de la méthode principale, nous devons définir une classe principale dans le fichier de description du module. Par exemple, nous pouvons définir ce qui suit dans le fichier module-info.java :

module my.module {

requires other.module;
exports com.example;
provides service with com.example.MyServiceImpl;
main-class com.example.MyMain;
Copier après la connexion
}

In this module Dans le fichier de description, nous spécifions le point d'entrée du programme en spécifiant main-class. Cela permet à la machine virtuelle Java de trouver la classe qui définit la méthode principale et de l'exécuter.

2. Résumé

Certains programmeurs Java peuvent rencontrer le problème de ne pas définir la méthode principale au travail ou aux études. À l'heure actuelle, nous pouvons utiliser la réflexion et le module Java 9. système Attendez que le mécanisme soit résolu. Cependant, il convient de noter que cette approche peut présenter des risques pour la sécurité, nous devons donc éviter autant que possible d'utiliser cette méthode. Lors de l'écriture du code, vous devez suivre les spécifications du langage Java et définir un point d'entrée clair du programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal