gpt4 book ai didi

java - 如何从命令行在 WAR 中运行类?

转载 作者:行者123 更新时间:2023-12-04 19:33:44 24 4
gpt4 key购买 nike

我有一个 Java 类,它有一个 main,我曾经从命令行作为独立应用程序运行,例如

java -jar myjar.jar params

我需要重新打包代码以在 apache 下运行,并且我的所有代码(包括旧 jar 中的入口点类)最终都在一个 WAR 文件中,以便于部署到 Web 服务器中。

但是,我仍然希望能够从命令行运行它并且代码没有更改并且都在其中,我只是不知道如何让它运行。

这是我尝试过的...

我认为 WAR 就像一个 jar ,所以

java -jar mywar.war params

说 list 中没有定义主类是失败的。

我在war中手动添加了manifest,再次尝试,效果一样。

我注意到在我的 war 中我有一个名为 META-INF 的文件夹,其中包含一个 manifest.mf,所以我在其中添加了一行来声明我的主类,就像我对普通 list 所做的那样...

Manifest-Version: 1.0
Main-Class: mypackage.MyEntryPointClass

这给出了一个 noClassDefFoundError mypackage.MyEntryPointClass,这是某种进步。这让我相信这只是一个路径问题,所以我尝试了

Manifest-Version: 1.0
Main-Class: WEB-INF.classes.mypackage.MyEntryPointClass

我现在遇到同样的错误,但有堆栈跟踪...

Exception in thread "main" java.lang.NoClassDefFoundError: WEB-INF/classes/mypackage/MyEntryPointClass (wrong name: mypackage/MyEntryPointClass)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)

我用谷歌搜索了一下,但找不到任何可以回答我问题的东西,我在这里读到了其他几个略有不同的问题,所以我想我会发帖。

Java 1.5,我认为这不会有什么不同。

最佳答案

与 Richard Detsch 类似,但更容易理解(也适用于包)

第 1 步:解包 War 文件。

jar -xvf MyWar.war

第二步:进入目录

cd WEB-INF

第 3 步:运行包含所有依赖项的 main

java -classpath "lib/*:classes/." my.packages.destination.FileToRun

关于java - 如何从命令行在 WAR 中运行类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33836210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com