使用源代码中的最新更改来运行.bat文件

时间:2018-07-23 03:35:10

标签: java batch-file

我通过批处理文件运行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

3 个答案:

答案 0 :(得分:1)

  

免责声明:这是作为paulsm4答案的编辑而开始的。但是我认为此更改太大,无法进行合理的编辑。

对源文件所做的更改将在您重新编译代码之前永远不会生效。

您可以通过以下方式实现:

  1. 手动或在批处理文件中调用javac(或等效的Java编译器)。

    基于此documentation javac 的用法:
    javac [ options ] [ sourcefiles ] [ classes ] [ @argfiles ]

      

    参数可以是任意顺序。

         

    选项
      命令行选项。

         

    源文件
      一个或多个要编译的源文件(例如MyClass.java)。

         

    课程
      一个或多个要为注释处理的类(例如MyPackage.MyClass)。

         

    @argfiles
      列出选项和源文件的一个或多个文件。这些文件中不允许使用-J选项。

  2. 拥有一个IDE(如eclipse)为您完成

    如果代码已更改,IDE将在运行时构建应用程序

  3. 使用构建工具,例如:

与开发人员结合使用的构建工具是大多数开发人员所要做的。构建工具还用于依赖项管理。如果一个以上的人从事一个项目,或者经常在计算机之间移动项目,那么这非常好。

答案 1 :(得分:0)

课程的

中的“您在记事本中所做的更改”将不会生效...直到您重新编译代码。

您需要在下次运行“ java”之前执行“ javac”编译器(或等效程序)。

这正是C / C ++程序员使用“ make”而Java程序使用“ Ant”的原因。

强烈建议:

  1. 获取IDE(我更喜欢Eclipse,但还有其他出色的选择):

    https://www.eclipse.org/downloads/

  2. 学习构建工具(Ant仍然非常有用):

    http://www.mkyong.com/tutorials/apache-ant-tutorial/

一种快速的解决方法是将“ 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相当慢,因此此代码段大约需要一秒钟,但这是获得可比格式的最可靠方法。