Exécutez le code Java stocké dans le presse-papiers.

introduction

Avez-vous déjà voulu essayer un petit programme Java? image.png

A partir de Java9, JShell est installé en tant qu'outil REPL. Avec «Java11», il est maintenant possible d'exécuter des fichiers Java sans «javac» préalable. De plus, l'environnement d'exécution en ligne tel que paiza.IO est pratique.

C'est vraiment facile à faire. Cependant, je me demande si je peux essayer le programme plus facilement ... Saya: bangbang: J'aimerais pouvoir exécuter le code Java coincé dans le presse-papiers ...: point_up:

J'ai donc trouvé le titre exécutant le code Java stocké dans le presse-papier </ b> </ font>.

J'ai cherché sur Internet à la légère, mais pour autant que j'ai cherché, il n'est pas sorti, alors je vais y arriver. (Je n'en ai pas besoin en premier lieu, donc ça ne sort pas ...: merde: ça sent plus quelque chose ...: merde: est de côté.)

je l'ai fait

En tant que mécanisme, il s'agit d'un mécanisme simple pour obtenir une chaîne de caractères du presse-papiers et passer la chaîne de caractères à jshell. Au fait, les packages suivants sont importés par défaut dans JShell.

jshell> /import
|    import java.io.*
|    import java.math.*
|    import java.net.*
|    import java.nio.file.*
|    import java.util.*
|    import java.util.concurrent.*
|    import java.util.function.*
|    import java.util.prefs.*
|    import java.util.regex.*
|    import java.util.stream.*

Commencez par créer une pièce pour obtenir la chaîne de caractères du presse-papiers. Tout va bien, mais je l'ai écrit en Java.

PrintClipboardString.java


import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
/**
 *Sort les données de chaîne de caractères du presse-papiers.
 */
public class PrintClipboardString {
    /**
     *Principale
     */
    public static void main(String[] args) {
        System.out.println(getClipboardString());
    }
    /**
     *Renvoie les données de chaîne du presse-papiers.
     * 
     * @return Renvoie les données de chaîne du presse-papiers. Renvoie null s'il ne s'agit pas de données de chaîne.
     */
    public static String getClipboardString() {
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();

        try {
            return (String) clip.getData(DataFlavor.stringFlavor);
        } catch (UnsupportedFlavorException e) {
            return null;
        } catch (IOException e) {
            return null;
        }
    }
}

Ensuite, créez un fichier batch (DOS) qui utilise ce PrintClipboardString.java. C'est le rôle d'obtenir les données de chaîne de caractères du presse-papiers et de les transmettre à JShell.

clipbord_jshell.bat


@echo off
setlocal enabledelayedexpansion

set CLIP_BOARD=
for /f "usebackq tokens=*" %%i in (`java PrintClipboardString`) do (
    set CLIP_BOARD=!CLIP_BOARD!^
%%i
)
echo =============
source d'écho
echo =============
echo !CLIP_BOARD!
echo.

echo =============
résultat de l'exécution de l'écho
echo =============
echo !CLIP_BOARD! | jshell -
echo.

pause

Puisqu'il s'agit de «DOS», l'instruction for est utilisée en tenant compte de la partie qui gère le résultat de l'exécution de la commande, mais je pense que c'est facile car les guillemets peuvent être utilisés normalement avec «shell Unix».

J'ai essayé de l'utiliser

1. J'ai essayé de sortir une chaîne de caractères.

System.out.println("hello"); ↑ Copiez ce texte (stockez-le dans le presse-papiers) et exécutez le fichier batch.

$clipbord_jshell.bat
=============
La source
=============
System.out.println("hello");

=============
Résultat d'exécution
=============
hello

Appuyez sur n'importe quelle touche pour continuer. . .

Bon sentiment: ensoleillé:

2. J'ai essayé d'utiliser la classe de mathématiques.

System.out.println(Math.random()); System.out.println(Math.random()); System.out.println(Math.random());

↑ Copiez ces 3 lignes de texte (stockez-les dans le presse-papiers) et exécutez le fichier batch.

$clipbord_jshell.bat
=============
La source
=============
System.out.println(Math.random());System.out.println(Math.random());System.out.println(Math.random());

=============
Résultat d'exécution
=============
0.13619188697681628
0.6036857063092008
0.7567411771330568

Appuyez sur n'importe quelle touche pour continuer. . .

La source est affichée sur une ligne, mais le résultat de l'exécution semble bon même avec plusieurs lignes. Puisque java.math. * A déjà été importé dans JShell, il pourrait être exécuté sans importer séparément.

3. J'ai compté encore quelques jours avant Noël.

Je pense qu'il y a de nombreux cas où vous voulez essayer le système d'exploitation de date relativement.

import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; LocalDateTime d = LocalDateTime.now(); LocalDateTime c = LocalDateTime.of(2018, 12, 25 , 23, 59); System.out.println (" jusqu'à Noël ... "+ ChronoUnit.DAYS.b between (d, c) +" day "); ↑ Copiez 5 lignes de ce texte (stockez-le dans le presse-papiers) et exécutez le fichier batch.

$clipbord_jshell.bat
=============
La source
=============
import java.time.LocalDateTime;import java.time.temporal.ChronoUnit;LocalDateTime d = LocalDateTime.now();LocalDateTime c = LocalDateTime.of(2018, 12,
 25 , 23, 59);System.out.println("Jusqu'à Noël ..." + ChronoUnit.DAYS.between(d, c) + "journée");

=============
Résultat d'exécution
=============
20 jours jusqu'à Noël

Appuyez sur n'importe quelle touche pour continuer. . .

Deketa: détendu:

en conclusion

-Il semble qu'il puisse être utilisé pour exécuter le programme (programme terminé) copié depuis Internet. ・ Il est gênant de devoir sortir une sortie standard (System.out ~) une par une. -Il est facile de copier et d'exécuter par erreur autre chose que du code Java. Mettez-vous en colère: no_good_tone3: -Si un commentaire de ligne est inséré au milieu, ce qui suit est considéré comme un commentaire et la logique n'est pas du tout évaluée. (Y a-t-il place à l'amélioration ici?) ・ Je pense que c'est une poubelle, mais mon enfant est mignon: merde: ・ La sécurité est-elle correcte? par ingénieur infrastructure · Je ne réfléchissais pas.

C'est Joyeux Noël: christamas_tree:

Recommended Posts