将JAR文件导入我的Hello World Console应用程序

发布于 2025-01-20 23:53:59 字数 1072 浏览 1 评论 0原文

我知道 Maven 用于管理库,但我想做一个我认为可行的简单示例。但尽管我花了几个小时搜索和尝试,但我还是坚持了下来。这让我很困扰,在放弃之前,如果有人可以提供帮助,我会在这里发帖。

我想做的事情: 我有 User.java 和 Main.java 在它自己的文件夹中。 我想构建 User 并使其成为 Jar。 我想在我的 Main.java 应用程序中使用 User.jar。

我的设置: 〜/用户/用户.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);
    }
}

我尝试过的:

javac User.java

< code>jar cf User.jar User.class

将 User.jar 文件复制到主文件夹

javac -cp User.jar Main.java

java Main

给出错误

<强>线程“main”中的异常java.lang.NoClassDefFoundError:用户 在 Main.main (Main.java:5)

我认为给 jar 提供类路径将修复

Java -cp User.jar Main

但这也会给出错误

Error: Could not查找或加载主类Main 两者都给出错误

有什么问题并修复?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遇见了你 2025-01-27 23:53:59

您确实应该正确打包您的类,但是:

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

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
阳光的暖冬 2025-01-27 23:53:59

首先,您的文件存储在不同的软件包中,

〜/user/user.java〜/main/main.java

,您在main.java中没有import

默认情况下,可见性是私人级别的软件包。

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.

勿挽旧人 2025-01-27 23:53:59

我能够找到以前有帮助的线程。

单击此处

在我的开发环境 Win 11 中阅读并尝试它们,我发现 -cp 的参数表达式,类路径取决于操作系统。

我没有完全按照我想要的方式工作,但我应该继续前进。

I was able to find previous thread that helps.

Click here

Reading and trying them out in my development environment which is Win 11, I found argument expression to -cp, classpath is OS depedent.

I didn't quite make it work as I wanted but I should move on.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文