web-dev-qa-db-fra.com

Création d'un fichier batch, pour javac simple et Java exécution de la commande

C'est une chose vraiment simple, mais je ne peux pas m'en sortir. J'ai regardé de nombreux articles sur StackOverFlow ainsi que sur Internet.

Mon objectif est de créer un .bat qui ouvrira cmd et exécutera mon Main.Java dans l'invite de commande. Facile, n'est-ce pas, mais je me demande comment?

Ci-dessous, j'écris les étapes que mon fichier de commandes doit effectuer

  1. cmd ouvert
  2. javac Main.Java
  3. Java Main

Mon fichier résidera à côté de tous mes fichiers .Java, donc je suppose que je n'ai pas besoin de donner de chemin explicite.

Ma compréhension jusqu'à présent par la recherche:

  1. éditeur de texte ouvert
  2. écrire un code pour ouvrir cmd (dont je ne sais pas comment)
  3. echo javac Main.Java (qui est encore un concept flou pour moi)
  4. echo Java Main

Enregistrer sous: name.bat

Toute aide serait appréciée. Je vous remercie.

8
TeaCupApp
  1. bloc-notes ouvert

  2. écrire

    @echo off
    
    javac Main.Java
    
    Java Main
    

3. enregistrer comme blahblah.bat

assurez-vous que Main.Java réside avec votre fichier de commandes et Java est défini dans la variable env.

4. double-cliquez sur le fichier batch, pas besoin d'ouvrir explicitement cmd tt s'ouvrira sur l'exécution de .bat

17

vous voulez ces quatre lignes de code dans votre Run.bat:

@echo off          //this makes it so you have an empty cmd window on startup
javac Main.Java    //this compiles the .Java into a .class
Java Main          // this runs the .class file
pause              //this prevents the window from instantly closing after program end
5
David
  1. Ouvrir le bloc-notes

  2. Tapez ce qui suit:

    javac *
    Java Main
    
  3. SaveAs Main.bat ou le nom que vous souhaitez utiliser pour le fichier de commandes

Assurez-vous que Main.Java se trouve dans le même dossier avec votre fichier de commandes

Double-cliquez sur le fichier batch pour exécuter le fichier Main.Java

1
WoLv3rine

Est-ce que je comprends seulement votre question? Vous avez besoin du fichier .bat pour compiler et exécuter les fichiers de classe Java?

s'il s'agit d'un fichier .bat. vous pouvez simplement double-cliquer.

et dans votre fichier .bat, vous avez juste besoin de javac Main.Java ((assurez-vous que votre chauve-souris a le chemin vers ur Main.Java) Java Main

Si vous voulez faire écho aux avertissements/déclarations de compilation, cela aurait besoin d'autre chose. Mais depuis, vous voulez que cela soit automatisé, peut-être que vous n'en aurez finalement pas besoin.

1
Gary Tsui

Créez un fichier texte brut (à l'aide du bloc-notes) et tapez la ligne exacte que vous utiliseriez pour exécuter votre fichier Java avec l'invite de commande. Modifiez ensuite l'extension en .bat et vous avez terminé.

Double-cliquez sur ce fichier pour exécuter votre programme Java.

Je recommande un fichier pour javac, un pour Java afin que vous puissiez dépanner si quelque chose ne va pas.

  • Assurez-vous que Java se trouve également sur votre chemin .. IE en tapant Java dans une fenêtre Dos lorsque dans votre Java espace de travail devrait afficher le message de version Java. Si Java n'est pas dans votre chemin, le fichier de commandes ne fonctionnera que si vous utilisez le chemin absolu vers le binaire Java.
1
stefgosselin

J'ai également fait face à une situation similaire où j'avais besoin d'un script qui peut prendre en charge javac, puis Java (ing) mon Java. Donc, je suis venu avec ce script BATCH.

::  @author Rudhin Menon
::  Created on 09/06/2015
::
::  Auto-Concrete is a build tool, which monitor the file under
::  scrutiny for any changes, and compiles or runs the same once
::  it got changed.
::  
::  ========================================
::  md5sum and gawk programs are prerequisites for this script.
::  Please download them before running auto-concrete.
::  ========================================
::  
::  Happy coding ...

@echo off

:: if filename is missing
if [%1] EQU [] goto usage_message

:: Set cmd window name
title Auto-Concrete v0.2

cd versions

if %errorlevel% NEQ 0 (
    echo creating versions directory
    mkdir versions
    cd versions
)

cd ..

javac "%1"

:loop
    :: Get OLD HASH of file
    md5sum "%1" | gawk '{print $1}' > old
    set /p oldHash=<old
    copy "%1" "versions\%oldHash%.Java"

    :inner_loop
    :: Get NEW HASH of the same file
    md5sum "%1" | gawk '{print $1}' > new
    set /p newHash=<new

    :: While OLD HASH and NEW HASH are the same
    :: keep comparing OLD HASH and NEW HASH
    if "%newHash%" EQU "%oldHash%" (
        :: Take rest before proceeding
        ping -w 200 0.0.0.0 >nul
        goto inner_loop
    )

    :: Once they differ, compile the source file
    :: and repeat everything again
    echo.
    echo ========= %1 changed on %DATE% at %TIME% ===========
    echo.       
    javac "%1"
goto loop

:usage_message
echo Usage : auto-concrete FILENAME.Java

Le script batch ci-dessus vérifiera le fichier pour toutes les modifications et compilera si des modifications sont apportées, vous pouvez le modifier pour le compiler quand vous le souhaitez. Bon codage :)

0
Rudhin

Je viens de créer un script batch simple qui prend un nom de fichier comme argument se compile et exécute le fichier Java avec une seule commande. Voici le code:

@echo off
set arg1=%1
shift
javac -cp . %arg1%.Java
java %arg1%
pause

Je viens de l'enregistrer sous run-Java.bat et de le mettre dans le répertoire System32 afin de pouvoir utiliser le script où je le souhaite.

Pour utiliser la commande, je ferais:

run-Java filename

et il compilera et exécutera le fichier. Assurez-vous simplement de laisser l'extension .Java lorsque vous tapez le nom de fichier (vous pouvez le faire fonctionner même lorsque vous tapez le nom du fichier, mais je suis nouveau dans le lot et je ne sais pas comment faire cela encore).

0
wes1099

La seule autre chose que j'ajouterais est de le rendre un peu plus flexible. La plupart du temps, j'ai un trivial Java que je veux exécuter comme - Main.Java, Simple.Java, Example.Java ou Playground.Java (vous avez l'idée).

J'utilise ce qui suit pour supprimer un javac et Java correspondant.

@echo off
javac %~n1.Java
java %~n1

Le% ~ n1 obtient le nom de fichier (sans extension) du premier argument passé au fichier batch. Donc, de cette façon, je peux l'exécuter en utilisant la complétion de tabulation et ne pas avoir à m'inquiéter qu'il fonctionne avec l'extension .class ou .Java.

Ainsi, les deux éléments suivants auront le même résultat:

run.bat Main.class
and
run.bat Main.Java

Ne répond pas à 100% à la question des affiches originales, mais je pense que c'est une bonne étape/évolution pour les programmes javac/Java simples.

0
Chad Gorshing

Je n'ai pas de JDK installé sur ma machine pour le vérifier, mais voici quelque chose pour commencer

%CLASSPATH%=C:\Program Files\Java\jdk1.6\bin rem or whatever your path is
START %CLASSPATH%\javac Main.Java
START %CLASSPATH%\Java Main
0
abhilash
@author MADMILK
@echo off
:getback1
set /p jump1=Do you want to compile? Write yes/no : 
if %jump1% = yes
goto loop
if %jump1% = no
goto getback2
:: Important part here
:getback2
set /p jump2=Do you want to run a Java program? Write yes/no : 
if %jump2% = yes
goto loop2
if %jump2% = no
goto getback1
:: Make a folder anywhere what you want to use for scripts, for example i make one.
cd desktop
:: This is the folder where is gonna be your script(s)
mkdir My Scripts
cd My Scripts
title Java runner/compiler
echo REMEMBER! LOWER CASES AND UPPER CASES ARE IMPORTANT!
:loop
echo This is the Java compiler program.
set /p jcVal=What Java program do you want to compile? : 
javac %jcVal%
:loop2
echo This is the Java code runner program.
set /p javaVal=What Java program do you want to run? : 
Java %javaVal%
pause >nul
echo Press NOTHING to leave
0
MADMILK