Vous devez également spécifier l'hôte lors du débogage à distance avec Java 9 ou version ultérieure

environnement

OS

Windows 10 64bit

Java

> java --version
openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)

Mise en œuvre pour vérification

Structure des dossiers


> tree /f
├─build
│  └─classes
│     └─java
│         └─main
│                 Hoge.class
└─src
    └─main
        └─java
                Hoge.java

Hoge.java


class Hoge {
    public static void main(String... args) {
        System.out.println("Hello World");
    }
}

Avant Java 9

Lors du débogage d'un programme Java avec Eclipse, ajoutez le sort suivant aux options de démarrage.


> java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y -cp build\classes\java\main Hoge

Avant Java 9, cela vous permettait de connecter à distance le débogueur avec le port 8000 (bien sûr, vous devez garder le port ouvert).

Java 9 ou version ultérieure entraînera une erreur

Cependant, lorsque j'essaie de me connecter à distance à une JVM démarrée avec cette option dans Java 9 ou version ultérieure avec un débogueur, l'erreur suivante se produit.

無題.png

Dans Java 9, vous ne pouvez plus vous connecter à distance si vous ne spécifiez pas d'hôte

JDK 9 Release Notes | Notes and Changes

JDWP socket connector accept only local connections by default The JDWP socket connector has been changed to bind to localhost only if no ip address or hostname is specified on the agent command line. A hostname of asterisk (*) may be used to achieve the old behavior which is to bind the JDWP socket connector to all available interfaces; this is not secure and not recommended.

Dans Java 9, si vous ne spécifiez pas d'hôte, il sera automatiquement lié à localhost, et il semble que vous ne puissiez plus vous connecter à distance.

Vous pouvez toujours vous connecter depuis n'importe quel emplacement distant en utilisant *, tel que ʻaddress = *: 8000`. (Cependant, il semble que ce ne soit pas recommandé car ce n'est pas bon pour la sécurité [^ 1])

[^ 1]: C'est un environnement hors production lors de la connexion avec le débogueur, donc je ne pense pas que vous ayez à vous en soucier. e? Connectez-vous la production au débogueur? Ahh

* Essayez de vous connecter en spécifiant

> java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=*:8000,suspend=y -cp build\classes\java\main Hoge

無題.jpg

connecté.

référence

Recommended Posts

Vous devez également spécifier l'hôte lors du débogage à distance avec Java 9 ou version ultérieure
Lorsque vous souhaitez écrire explicitement OR ou AND avec ransack
Découvrez la taille maximale du tas lorsque vous spécifiez l'option -Xmx ou -XX: MaxRAM en Java
La première chose à faire lorsque vous voulez être satisfait d'Heroku sur GitHub avec Eclipse sur Java
(Limité à Java 7 ou version ultérieure) Je souhaite que vous compariez des objets dans Objects.equals
Comment déboguer à distance Java 9 ou version ultérieure
[Pour les débutants] Lorsque vous voulez dire que l'option JVM (-D) ne fonctionne pas avec la commande java -jar, ou que la bibliothèque est boguée.
[Java] Pourquoi vous embêtez-vous à utiliser l'interface (Spring est également disponible)
Jusqu'à ce que vous exécutiez un programme Java avec le SDK AWS local sur Windows
Code utilisé lorsque vous souhaitez traiter Json avec uniquement des bibliothèques standard en Java (version améliorée) gson inutile
Spécifiez ClassPath lors de l'utilisation de jupyter + Java avec WSL
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Comment supprimer le tweet associé à l'utilisateur lorsque vous le supprimez en même temps
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Que faire si vous ne pouvez pas exécuter avec la commande "nom du package Java / nom de la classe"
Code à utiliser lorsque vous souhaitez traiter Json en Java avec uniquement des bibliothèques standard
[Java] Obtenez la date 10 jours plus tard avec la classe Calendar
Connexion HTTPS avec Java au serveur de certificats auto-signé
[LeJOS] Contrôlons à distance le moteur EV3 avec Java
Lorsque vous souhaitez remplacer dynamiquement l'annotation dans Java 8
Ce dont les ingénieurs Java ont besoin pour se préparer à la version Java 11
Remplacez seulement une partie de l'hôte URL par java
Utilisez JLine lorsque vous souhaitez gérer les frappes sur la console caractère par caractère en Java
Lorsque vous souhaitez implémenter des tests de bibliothèque Java avec Spock en multi-module avec Gradle dans Android Studio 3
Comment réduire même un peu la charge du programme lors de la combinaison de caractères avec JAVA
Que ce soit pour faire du côté serveur au moment de la reconstruction du système avec Kotlin ou Java