Cannot run simple HelloWorld class [duplicate] - java

This question already has answers here:
Cannot run simple compiled java program?
(4 answers)
Closed 8 years ago.
I'm trying to compile simple Java HelloWorld source on Windows. I compile it the following way:
javac HelloWorld.java
But then when I run it like this
java HelloWorld.class
I get an error
Could not find or load main class HelloWorld.class
But the file is there, any hints?

Run it like this:
java HelloWorld
Do not put .class suffix after the class name.

java -cp . HelloWorld
The . is needed in order to tell Java to include the current directory in the classpath.
HelloWorld is the name of the class to run (must not add the .class suffix).

This is rather a basic step towards Java development and it's important!
say you have a Java file named: Main.java , open it by your favorite editor:
public class Main
{
public static void main(String[]args)
{
System.out.println("Rugal");
}
}
Now just exit your editor and use javac to compile:
javac Main.java
which will generate a Main.class file.
Then you can use java to launch a JVM to execute this main method in class Main.
java Main
notice that as your class name is Main thus you need to execute the Main class.
here you need not to include .class suffix after the class name.
If you have package name in this class, just use:
java your.package.name.Main to execute.
Yes, is that easy? start your journey in Java!

javac HelloWorld.java is ok But then
use
java HelloWorld
`

To run java program
java HelloWorld
(w/o .class extension)
[NOTE]
Tutorials for beginners http://www.javabeginner.com/

Compiling your java file using javac HelloWorld.java is fine but when your try run it do like this. java HelloWorld.
**
NOTE : Use only class name while running your compiled code.

Related

Is it possible to use java -cp to run a class which is not in a package

You can use this command to start a jar file and specify a main class.
java -cp file.jar path.to.MainClass
My problem is that I just have a class that is not contained in a package. So the main class is just called MainClass. So the command becomes
java -cp file.jar MainClass
The problem is that java does not seem to be able to load the class and just says it could not be found or loaded.
Is there a way to start a jar with the -cp argument like that?
Just run:
java -cp file.jar MainKt
Main-Class in manifest only impacts java -cp file.jar, not when used with a class argument like MainClass (which presumably doesn't exist) or MainKt.
Also, if your class is really named MainClass inside the MainKt.java source file, it should be renamed to match the source file name (or vice versa) first; see e.g. this question.

Java via the Linux command line with packages [duplicate]

This question already has answers here:
How do I run a Java class in a package?
(5 answers)
Closed 3 years ago.
I have depended on using IDEs all the time for Java and would like to use the terminal to understand more.
I have a Java application called test.java. It depends on other jar files to compile and run.
The first line of my application also creates a package as follows
package package1;
Now, when I compile this with :
javac -cp .:"JAR FILE PATHS HERE" test.java
It compiles fine. However when I try to execute it as follows:
java -cp .:"JAR FILE PATHS HERE" test
I get the error Error: Could not find or load main class test
If I don't create a package in my application with package package1; , it executes fine.
How do I execute it if I do create package1 tho? using path package1/test doesn't work
You need to double check your folder structure- as you know, when using folders directly (instead of jar files), packages are subfolders under the classpath (see the complete doc, or read below for an example).
That means, in your example you should have the folder structure:
workingFolder
\- package1
\- Test.java
\- Test.class
From workingFolder, you run javac package1/Test.java ; that produces Test.class under package1.
To run, from workingFolder you run java -cp . package1.Test.
The folder workingFolder is in the classpath, so package1.Test is resolved as package1/Test.class; the package1 folder is basically the package1 package.
edit and the Test class must be in the right package, like:
package package1;
class Test {
public static void main(String[] v) {
System.out.println("hw!");
}
}
Also, see https://docs.oracle.com/javase/tutorial/getStarted/cupojava/index.html for a good explanation on how to compile and run a Java program using the command line.

Could not find or load main class - for any program

I'm having a problem where the java command - no matter what I'm trying to run, says that it Could not find or load main class.
Everything is fine when compiling with javac, .class files are created. So when I run:
javac HelloWorld.java
on
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World");
}
}
everything compiles fine, a HelloWorld.class file is created along side the HelloWorld.java file. However when I then go to run:
java HelloWorld
1) the most telling sign is that when I press Tab to autofill HelloWorld nothing comes up.
2) when I do run it, I get the Error: Could not find or load main class HelloWorld despite it being in the same directory, not being part of a package, compiling fine with a .class file, the program having a main class.
For reference running Fedora 23 64bit, openjdk version "1.8.0_111".
Just a small reminder for the newbies in Java:
When compiling, you type:
javac MyClass.java
Now, you've got two files:
MyClass.class MyClass.java
Now, whereas you typed the .java extension when compiling, you must NOT type the extension .class when running the program. You should just type:
java MyClass
If you type java MyClass.class then you'll get:
Error: Could not find or load main class
Try using java -cp . HelloWorld
Some good reading: http://www.sergiy.ca/how-to-compile-and-launch-java-code-from-command-line/
You need to specify classpath parameter while running your example:
java -cp . HelloWorld
java -cp HelloWorld
works. I use windows 10, and was checking out the very course. I first had to add it to path, and spent time wasted on it. Be sure, however, to NOT include the .class part of the name. Java is not my first language, but Java is portable and is a suitable language for everyone.
The same happened to me while compiling a piece of code (that was initially writen for an IDE with several files) throug terminal. The problem was mentioning the package with the same name of the main class (package HelloWorld). I fixed it and now it works. Not sure if that's your case
May be you have removed your JDK From System.
You can change it using following steps
1> Select Project
2> Right Click On Project
3> Click On Properties
4> Go to Java Build Path
5> Click On Libraries Option
6> Select JRE System Library
7> Click On Edit
8> Change Your Library Accordingly

Importing Classes from another package

Hello so I'm trying to Import a class from another project I made but I cant get it to work..
this is my code:
import program.GUI;
public class name {
//code
}
I get the following error
Opens the new class wizard to create the type.
package: program
public class GUI {
}
I have created a prog02>src>program>GUI.java
How can I solve it.
I think I see the problem here...
I don't know if your running java from cmd, but my explanation is going to assume you are. Outside of using IDEs like Netbeans and Eclipse that pretty much streamline the build process of java code, it's good to know how it works.
Ok, here goes:
1) Compile your java source code files into bytecode (.class files) by invoking JAVAC
javac [optional flags] [path to file intended for compilation]
This creates the bytecode that the JVM will need in order to execute.
2) Invoke the Java interpreter (JVM) to run your bytecode.
java [optional flags] [name of class file w/o .class extension]
If everything goes right this command will create a JVM process with main.java being the main entry to the program that creates the initial thread that runs your program.
Here what you should write to get you program to compile with you package dependencies.
cd to base dir that contains program with main method (src)
javac -cp . program/ (check by going to dir to see if a GUI.class file
was generated)
javac -cp . Main
java -cp . Main
That should do it. Otherwise from and IDE standpoint you either don't have file in the right directory or you are not using the right syntax for specifying your package and import.
The package declaration on the GUI class is not right. It should be:
package program;
public class GUI {
}
You may also find this useful: Java Code Conventions

java compiling error "could not find or load main class main.java"

I understand there are a lot of threads similar to this one, but I couldn't find the one that solved my problem. Following this instruction I was able to get java in terminal and be able to compile. I am able to "javac main.java" with no errors, but when I "java main.java", it simply says it could not find or load main class main.java. I believe that my classpath is wrong but i'm not entirely sure how to fix this either. This is what comes out when I type in echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/taka/.rvm/bin
and when I type echo $CLASSPATH it doesn't show anything.
I have also tried java -cp ./ main.java as that seemed to have worked when I compiled and ran HelloWorld.java
If your javac is successful then update your classpath environment variable and add current directory i.e. . in the classpath, then run the java as below:
java main
Please note: There is no .java extension as you need to run .class file(which was generated after javac) that also without mentioning the extension. Java uses generated class files to execute not the original source files.
main.java java is your source code . you cant run java source without compile. For compilation you should use javac command. After that it will create a main.class file which can understand by interpreter which is java.
So you to run your class use java main or java main.class

Categories