我无法使用Python脚本编译和运行Java程序。

4

我认为当我使用os.system("cd java path")来改变路径到Java目录时,它并没有真正地改变到那个目录。

这是我写的代码:

    import os
    import time
    #import subprocess
    os.system("cls")
    os.system("cd C:\\Program Files\\Java\\jdk-13.0.1\\bin")
    time.sleep(2)
    os.system("javac add.java")
    os.system("java add")

错误:

错误:文件未找到:add.java 用法:javac 使用--help获取一份可能选项的列表 错误:无法找到或加载主类add 原因:java.lang.ClassNotFoundException: add


add.java在哪里?你的代码只有在add.javajavac在同一个文件夹中时才能正常工作。 - Eduardo Pascual Aseff
你尝试了 cd java path,你认为它应该做什么?这不是将目录添加到 PATH 变量的命令。此外,当您更改当前目录(使用 cd)时,只能访问该目录中的文件。因此,请将 add.java 复制到 Java 安装的 bin 目录中,或在调用 javac 时使用绝对路径到 add.java。为避免使用绝对路径,您可以首先获取 add.java 文件的目录,然后在调用 javac 之前使用该变量。javac 编译到 cwd,因此调用 java add 应该可以工作。 - itwasntme
2个回答

4

我认为问题在于在执行 cd C:\\Program Files\\Java\\jdk-13.0.1\\bin 命令后,你的当前目录可能没有包含 add.java 文件: 你可以尝试这个“静态解决方案”,该方法适用于一个Java安装程序:

import os
import time
#import subprocess
os.system("cls")
time.sleep(2)
os.system("C:\\Program Files\\Java\\jdk-13.0.1\\bin\\javac add.java")
os.system("C:\\Program Files\\Java\\jdk-13.0.1\\bin\\java add")

您也可以将Java安装路径添加到操作系统的PATH中,这样就可以在不使用绝对路径的情况下运行javacjava。如果以后更改了Java版本,只需更新Java路径,脚本就会继续可操作。此时代码将如下所示:

import os
import time
#import subprocess
os.system("cls")
time.sleep(2)
os.system("javac add.java")
os.system("java add")

2
是的,它起作用了,谢谢!我还将我的脚本直接复制到了我的Java文件夹中,这也起作用了... - Aditya
1
我很乐意帮助你。可惜这让我失去了一个踩 jajaja。 - Eduardo Pascual Aseff
如果提问者说它起作用了,我可以将其删除。但在我看来,最好尝试将该Java文件夹添加到PATH中,而不是使用绝对路径,并且正如您从提问者的评论中所看到的那样 - 解释为什么将Java文件复制到\bin\文件夹是不好的。我稍后可以删除-1(由于SO限制)或者如果您编辑了您的答案。 - itwasntme
1
@itwasntme 我同意你的观点。我在回答中没有花太多精力。也许我只是想到了一个快速有效但并不真正有教育意义的问题。-1 的评分没关系。我认为你可以从提问者的评论中得出一个好的答案。 - Eduardo Pascual Aseff
嗯,我需要安装Python等等。在你的代码中加入一些额外的信息,然后我就会去掉-1。你的代码可以在程序启动时的cwd中工作 - 因此使用它,无需将.java文件复制到bin目录下。我稍后再做,因为现在我需要休息一下。 - itwasntme
显示剩余2条评论

0

这段代码对我很有效,但我不得不将脚本复制到bin文件夹中才能使其正常工作。

  import os
  import time
  aditya = True
  while aditya:
      os.system("cls")
      print("Enter a program name to execute:")
      name = input()
      os.system(f"javac {name}.java")
      os.system(f"java {name}")
      key = input()

1
我建议您将程序放在安装文件夹之外。如果以后安装新的Java版本,您将不得不复制您的代码并更改脚本。 - Eduardo Pascual Aseff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接