Everytime I want to build and run my program I do:
javac myProgram.java
java myProgram
I want to do something like this:
buildrun = javac (some_argument).java && java (some_argument)
so after I can just
buildrun myProgram
How to achieve this on Windows?
As other's have suggested you can simply create a batch file to build and run your program. Copy this in Notepad and save as .bat.
#echo off
set /p class="Enter Class: "
javac "%class%".java
java "%class%"
As you want, the batch file will ask for a FileName when it runs. In your case, you can set it to 'myProgram' and it will then compile and run the program.
Just make sure your batch file and your java file reside in the same folder for this script to run. You can always tweak the bat file to even accept the full path of the Java file.
To compile and run Java with single command line in cmd use:
java myProgram.java
You can use Makefile this way:
Create a file named Makefile within the same folder where your java files reside.
Add these contents to Makefile
run: compile
java $(class)
compile:
javac $(class).java
From terminal, run this command:
make run class=myProgram
This way, it will compile first then run your java class in a single command
Yet another solution. Create buildrun.cmd file with the following code:
#echo off
javac %1.java
if errorlevel = 0 goto RUN
:ERROR
echo "Build fails!"
goto END
:RUN
java %1
:END
Now you can pass the class name which should be processed. For example: buildrun MyProgram to compile MyProgram.java and run MyProgram.class
In this case execution will performs only if your class was compiled successful.
I have a .java file which i compiled in a package named "Mypack",using command line as follows
javac -d . file_name.java // The "." specifies the current working directory which was the desktop
so it creates a folder on the desktop named "Mypack"(The package name), in the folder the .class file for my program is placed.Now i did the following
java -classpath "C:\Users\LoRd CuRZon\Desktop\Mypack" file_name // Error Could not find or load main method
Even if i go into the directory "Mypack" and launch command prompt from that directory and try to run the program i still get the same error.
run it as likewise from Desktop,
c:/.../Desktop> java Mypack.file_name
java command requires fully qualified name .
so from desktop run java Mypack.classname
If you have this error:
Error Could not find or load main method
That means you don't write a main method in you code try to write it.
But befor to do those steps:
Fo compiling a programme do this:
java Mypack.file_name
To run it do like this:
java Mypack.classname
I have a structure code like this :
I want to run my program using mcd using javac, like this : javac ListenerZipFile.java. The result like :
Why i can't run my program?
you are using a package without telling javac where it is located (jnotify for example).
you'd have to use it like:
javac -classpath "path/to/jnotify-0.94.jar" test.java
There are 2 problems here.
Incorrect directory location for compiling packed classes.
classpath no set correctly.
Consider you have, source_dir = D:\~\~\src, jar_location = D:\~\~\lib and package is com.example then your steps to compile are:
cd to $source_dir
$source_dir> set classpath=.;jar_location
$source_dir> javac com\example\Examples1.java or $source_dir> javac com\example\*.java
As per path shared, command to compile should be :
cd C:\ListenerZipfile\src
javac -cp .;C:\ListenerZipfile\lib\*.jar com\sigma\main\ListenerZipFile.java
Command to run java program with above path:
java -cp .;C:\ListenerZipfile\lib\*.jar com.sigma.main.ListenerZipFile
if you are using eclipse (from the screen shot i think you do) then
right click on your project->Properties->Java Build Path, click on Libraries tab->click on "Add External JARs" button-> pick your jar and click OK to close all windows.
This should solve your problem, if your problem is jar dependencies
I have been testing the examples (HelloWorld.java) from Sphinx4 with Eclipse, but I would like to compile and run them from the command line.
The application needs 5 .jars to be able to run, I have read that in order to compile a java class with multiple .jars I need to execute the following command (as an example I will show short names):
javac -cp one.jar:two.jar:three.jar:four.jar:five.jar HelloWorld.java
The console does not throw any error messages:
parias001#parias001-pc:~/Projects/citadel_voices/sphinx_test > javac -cp jsapi.jar:sphinx4.jar:TIDIGITS_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar:WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz.jar:WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar HelloWorld.java
parias001#parias001-pc:~/Projects/citadel_voices/sphinx_test >
I think that the compilation succeeded. Now I would like to run the application, I read that in order to do this, I have to execute the command as follows (Using short name example as before):
java -cp one.jar:two.jar:three.jar:four.jar:five.jar HelloWorld
This is the message that the console throws:
parias001#parias001-pc:~/Projects/citadel_voices/sphinx_test > java -cp jsapi.jar:sphinx4.jar:TIDIGITS_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar:WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz.jar:WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar HelloWorld
Error: Could not find or load main class HelloWorld
I don't know what is going on here, I should also say that I do not have a lot of experience using external .jars.
The names of the .jars are:
jsapi.jar
sphinx4.jar
TIDIGITS_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar
WSJ_8gau_13dCep_8kHz_31mel_200Hz_3500Hz.jar
WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar
I appreciate any help you can give me.
You have to include current directory in classpath:
java -cp .:one.jar:two.jar:three.jar:four.jar:five.jar HelloWorld
Note the leading .:
From this reference:
The default class path is the current directory. Setting the CLASSPATH variable or using the -classpath command-line option overrides that default, so if you want to include the current directory in the search path, you must include "." in the new settings.
I'm trying to execute a Java program from the command line in Windows. Here is my code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyFile
{
public static void main(String[] args)
{
InputStream inStream = null;
OutputStream outStream = null;
try
{
File afile = new File("input.txt");
File bfile = new File("inputCopy.txt");
inStream = new FileInputStream(afile);
outStream = new FileOutputStream(bfile);
byte[] buffer = new byte[1024];
int length;
// copy the file content in bytes
while ((length = inStream.read(buffer)) > 0)
{
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
System.out.println("File is copied successful!");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
I'm not sure how to execute the program - any help? Is this possible on Windows? Why is it different than another environment (I thought JVM was write once, run anywhere)?
Source: javaindos.
Let's say your file is in C:\mywork\
Run Command Prompt
C:\> cd \mywork
This makes C:\mywork the current directory.
C:\mywork> dir
This displays the directory contents. You should see
filenamehere.java among the files.
C:\mywork> set path=%path%;C:\Program Files\Java\jdk1.5.0_09\bin
This tells the system where to find JDK programs.
C:\mywork> javac filenamehere.java
This runs javac.exe, the compiler. You should see nothing but the
next system prompt...
C:\mywork> dir
javac has created the filenamehere.class file. You should see
filenamehere.java and filenamehere.class among the files.
C:\mywork> java filenamehere
This runs the Java interpreter. You should then see your program
output.
If the system cannot find javac, check the set path command. If javac
runs but you get errors, check your Java text. If the program
compiles but you get an exception, check the spelling and
capitalization in the file name and the class name and the java
HelloWorld command. Java is case-sensitive!
To complete the answer :
The Java File
TheJavaFile.java
Compile the Java File to a *.class file
javac TheJavaFile.java
This will create a TheJavaFile.class file
Execution of the Java File
java TheJavaFile
Creation of an executable *.jar file
You've got two options here -
With an external manifest file :
Create the manifest file say - MANIFEST.mf
The MANIFEST file is nothing but an explicit entry of the Main Class
jar -cvfm TheJavaFile.jar MANIFEST.mf TheJavaFile.class
Executable by Entry Point:
jar -cvfe TheJavaFile.jar <MainClass> TheJavaFile.class
To run the Jar File
java -jar TheJavaFile.jar
Complile a Java file to generate a class:
javac filename.java
Execute the generated class:
java filename
In case your Java class is in some package. Suppose your Java class named ABC.java is present in com.hello.programs, then you need to run it with the package name.
Compile it in the usual way:
C:\SimpleJavaProject\src\com\hello\programs > javac ABC.java
But to run it, you need to give the package name and then your java class name:
C:\SimpleJavaProject\src > java com.hello.programs.ABC
Since Java 11, java command line tool has been able to run a single-file source-code directly. e.g.
java HelloWorld.java
This was an enhancement with JEP 330: https://openjdk.java.net/jeps/330
For the details of the usage and the limitations, see the manual of your Java implementation such as one provided by Oracle: https://docs.oracle.com/en/java/javase/11/tools/java.html
Assuming the file is called "CopyFile.java", do the following:
javac CopyFile.java
java -cp . CopyFile
The first line compiles the source code into executable byte code. The second line executes it, first adding the current directory to the class path (just in case).
It is easy. If you have saved your file as A.text first thing you should do is save it as A.java. Now it is a Java file.
Now you need to open cmd and set path to you A.java file before compile it. you can refer this for that.
Then you can compile your file using command
javac A.java
Then run it using
java A
So that is how you compile and run a java program in cmd.
You can also go through these material that is Java in depth lessons. Lot of things you need to understand in Java is covered there for beginners.
You can compile any java source using javac in command line ; eg, javac CopyFile.java.
To run : java CopyFile.
You can also compile all java files using javac *.java as long as they're in the same directory
If you're having an issue resulting with "could not find or load main class" you may not have
jre in your path. Have a look at this question:
Could not find or load main class
On Windows 7 I had to do the following:
quick way
Install JDK http://www.oracle.com/technetwork/java/javase/downloads
in windows, browse into "C:\Program Files\Java\jdk1.8.0_91\bin" (or wherever the latest version of JDK is installed), hold down shift and right click on a blank area within the window and do "open command window here" and this will give you a command line and access to all the BIN tools. "javac" is not by default in the windows system PATH environment variable.
Follow comments above about how to compile the file ("javac MyFile.java" then "java MyFile") https://stackoverflow.com/a/33149828/194872
long way
Install JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html
After installing, in edits the Windows PATH environment variable and adds the following to the path C:\ProgramData\Oracle\Java\javapath. Within this folder are symbolic links to a handful of java executables but "javac" is NOT one of them so when trying to run "javac" from Windows command line it throws an error.
I edited the path: Control Panel -> System -> Advanced tab -> "Environment Variables..." button -> scroll down to "Path", highlight and edit -> replaced the "C:\ProgramData\Oracle\Java\javapath" with a direct path to the java BIN folder "C:\Program Files\Java\jdk1.8.0_91\bin".
This likely breaks when you upgrade your JDK installation but you have access to all the command line tools now.
Follow comments above about how to compile the file ("javac MyFile.java" then "java MyFile") https://stackoverflow.com/a/33149828/194872
STEP 1: FIRST OPEN THE COMMAND PROMPT WHERE YOUR FILE IS LOCATED. (right click while pressing shift)
STEP 2: THEN USE THE FOLLOWING COMMANDS TO EXECUTE.
(lets say the file and class name to be executed is named as Student.java)The example program is in the picture background.
javac Student.java
java Student
As of Java 9, the JDK includes jshell, a Java REPL.
Assuming the JDK 9+ bin directory is correctly added to your path, you will be able to simply:
Run jshell File.java — File.java being your file of course.
A prompt will open, allowing you to call the main method: jshell> File.main(null).
To close the prompt and end the JVM session, use /exit
Full documentation for JShell can be found here.
Now (with JDK 9 onwards), you can just use java to get that executed.
In order to execute "Hello.java" containing the main, one can use:
java Hello.java
You do not need to compile using separately using javac anymore.
You can actually run Java program as you would shell or python scripts without manually compile the Java file, as described in
JEP 330. That is available since JDK 11.
If you create a file testing, and put the following you should be able to run it as command testing. You need to make it executable in Linux and Mac OSX with chmod +x testing.
#!/usr/bin/env java --source 11
public class Test {
public static void main(String [] args) {
System.out.println("Hello world!");
System.exit(0);
}
}
You are not allowed to use the file extension .java in the previous example.
$ chmod +x testing
$ ./testing
Hello world!
$
But you can still execute if it is was name Test.java without the shebang "#!" prefix like this:
public class Test {
public static void main(String [] args) {
System.out.println("Hello again!");
System.exit(0);
}
}
Then execute the file Test.java with following command:
$ java Test.java
Hello again!
$
So this works as long as you have a new enough Java compiler in the path, check with java -version. More information in this blog.