我通过批处理文件运行Java源代码。问题是,当我通过任何文本编辑器(如记事本等)对源代码进行任何更改并保存代码时,通过批处理文件运行代码时所做的更改不会反映回来。
下面是我用于运行代码的批处理文件的示例。
cd %cd%
set classpath=%cd%\target\classes;%cd%\lib\*
echo %classpath%
echo %cd%
java org.testng.TestNG %cd%\code.xml
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" %cd%\test-output\report.html
pause
答案 0 :(得分:1)
免责声明:这是作为paulsm4答案的编辑而开始的。但是我认为此更改太大,无法进行合理的编辑。
对源文件所做的更改将在您重新编译代码之前永远不会生效。
您可以通过以下方式实现:
手动或在批处理文件中调用javac
(或等效的Java编译器)。
基于此documentation的 javac 的用法:
javac [ options ] [ sourcefiles ] [ classes ] [ @argfiles ]
参数可以是任意顺序。
选项
命令行选项。源文件
一个或多个要编译的源文件(例如MyClass.java)。课程
一个或多个要为注释处理的类(例如MyPackage.MyClass)。@argfiles
列出选项和源文件的一个或多个文件。这些文件中不允许使用-J选项。
拥有一个IDE(如eclipse)为您完成
如果代码已更改,IDE将在运行时构建应用程序
与开发人员结合使用的构建工具是大多数开发人员所要做的。构建工具还用于依赖项管理。如果一个以上的人从事一个项目,或者经常在计算机之间移动项目,那么这非常好。
答案 1 :(得分:0)
课程的
中的“您在记事本中所做的更改”将不会生效...直到您重新编译代码。
您需要在下次运行“ java”之前执行“ javac”编译器(或等效程序)。
这正是C / C ++程序员使用“ make”而Java程序使用“ Ant”的原因。
强烈建议:
获取IDE(我更喜欢Eclipse,但还有其他出色的选择):
学习构建工具(Ant仍然非常有用):
一种快速的解决方法是将“ javac”添加到您的.bat文件中。但这意味着您每次运行.bat文件时都会重新编译-无论是否需要。当您的程序由一个或两个源文件组成时,这种方法就可以正常工作……但是当您的应用程序扩展到10或数百个源文件时,它就无法扩展。
熟悉IDE,并熟悉构建工具。时间充裕:)
答案 2 :(得分:0)
检查,如果源代码比编译的代码新(我对Java不了解,因此您一定要修改扩展名-也可以在此答案中随意修改它,以帮助其他人,他们可能会迷惑于此) )
for %%F in (program.txt) do set file=%%~fF
for /f "tokens=2 delims==" %%I in ('wmic datafile where name^="%file:\=\\%" get lastmodified /format:list') do set datetimeSource=%%I
for %%F in (program.exe) do set file=%%~fF
for /f "tokens=2 delims==" %%I in ('wmic datafile where name^="%file:\=\\%" get lastmodified /format:list') do set datetimeCompiled=%%I
if "%datetimeSource%" gtr "%datetimeCompiled%" echo insert here your command to compile the code...
(有关奇怪语法的原因,请参见here)
wmic
相当慢,因此此代码段大约需要一秒钟,但这是获得可比格式的最可靠方法。