I understand Maven is used to manage libs, but I wanted to do a simple example I thought will work . But I am stuck with though I spent few hours searching and trying out. This bothers me a lot, before give up, I post here if anyone can help.
What I want to do: I have User.java and Main.java in its own folder. I want to build User and make it Jar. And I want to use User.jar in my Main.java application.
My setup: ~/User/User.java ~/Main/Main.java
User.java
public class User {
private String name;
int idx;
}
Main.java
public class Main {
public static void main(String[] args) {
User user = new User();
System.out.println(user);
}
}
What I tried:
javac User.java
jar cf User.jar User.class
copied User.jar file to Main folder
javac -cp User.jar Main.java
java Main
gives error
Exception in thread "main" java.lang.NoClassDefFoundError: User at Main.main (Main.java:5)
I think giving class path to jar will fix
Java -cp User.jar Main
but this also gives error
Error: Could not find or load main class Main both give error
what's problem and fix?
CodePudding user response:
First of all, your files are storing in a different packages,
~/User/User.java ~/Main/Main.java
and you have no import
in your Main.java.
By default the visibility is package private level.
CodePudding user response:
You really should properly package your classes, but:
goose@t410:/tmp$ javac Main.java User.java
goose@t410:/tmp$ jar cfe user.jar Main Main.class User.class
goose@t410:/tmp$ java -jar user.jar
User@4e0e2f2a