如何从现有Java项目中提取主类?

如何从现有Java项目中提取主类?,java,main,executable-jar,extraction,Java,Main,Executable Jar,Extraction,我有一个大型Struts1 web项目,它也使用Hibernate 我们的产品包之一是: com.company.examples.users 另一个是: com.company.examples.orders 每个包中都有一个用于测试的main.java文件(实际上是从Netbeans中运行该文件) 因此,我可以右键单击主文件并告诉它运行,输出显示在日志窗口中。那很好。但我希望能够将它们提取到实际的JAR文件中,以便它们可以单独运行 这些文件还依赖于整个较大的项目。很多包裹等等 我怎样才能做到

我有一个大型Struts1 web项目,它也使用Hibernate

我们的产品包之一是:

com.company.examples.users

另一个是:

com.company.examples.orders

每个包中都有一个用于测试的
main.java
文件(实际上是从Netbeans中运行该文件)

因此,我可以右键单击主文件并告诉它运行,输出显示在日志窗口中。那很好。但我希望能够将它们提取到实际的JAR文件中,以便它们可以单独运行

这些文件还依赖于整个较大的项目。很多包裹等等


我怎样才能做到这一点呢?

这里有一个快速而肮脏的dos方法。创建一个文件夹并将
cd
放入其中

>md test
>cd test
将WAR文件、
prepare tests.bat
make classpath.bat
文件复制到该文件夹中

其中
准备测试。bat
是:

md unpacked
cd unpacked
jar xvf ..\%1
cd WEB-INF\classes
jar cvf ..\..\..\classes.jar *
cd ..\..\..
call make-classpath
@echo off
<nul set /p =set CLASSPATH=.;> set-classpath.bat
<nul set /p =classes.jar;>> set-classpath.bat
for /f %%a IN ('dir unpacked\WEB-INF\lib *.jar /s/b') do <nul set /p =%%a;>> set-classpath.bat
make classpath.bat
是:

md unpacked
cd unpacked
jar xvf ..\%1
cd WEB-INF\classes
jar cvf ..\..\..\classes.jar *
cd ..\..\..
call make-classpath
@echo off
<nul set /p =set CLASSPATH=.;> set-classpath.bat
<nul set /p =classes.jar;>> set-classpath.bat
for /f %%a IN ('dir unpacked\WEB-INF\lib *.jar /s/b') do <nul set /p =%%a;>> set-classpath.bat

不过,最好使用Maven和JUnit之类的工具来自动化/简化测试。

您是在问如何创建jar吗?使用jar命令怎么样?我对Java(C#/Ruby开发者)有点陌生,所以我想是的。我可以创建大量WAR文件以部署到我们的web服务器,但我需要将其中的一部分(main.java类)提取到单独的JAR文件中。谢谢,正如您所说,main.java类用于测试其他类。因此,它们可能依赖于所有其他类。因此,您应该创建一个包含所有类的jar文件。您的组织中是否有人知道Java是如何工作的?必须有一些构建过程来生成war文件,并且应该更新这个构建过程来生成jar文件。我有点担心。我们使用Netbeans。我们单击“清理并构建”,然后复制WAR文件。这就是我被困住的原因。我正在努力学习,但时间的限制有时会使学习变得困难。如何创建单个JAR文件?我只得到WAR文件。看看如何用netbeans包装jar文件,google甚至找到了一个视频;)然后使用类似
java-cp.jar:.jar:。。。my.package.main
来运行主类。这实际上很有效。但我还是继续创建了一个独立的java应用程序,并转移到了我需要的地方。这是一个很好的提醒,我们需要更好地组织这些东西。:-)谢谢\酷。是的,最好尝试构建一个能完成一项工作的小组件,并将其做好。然后,无需应用服务器即可对其进行单独测试。当然,有些测试可能需要一个web容器来运行,但最终得到的测试要少得多。