java - 在Python中运行包含java命令的批处理文件

标签 java python batch-file

当你无法在Python中手动执行.bat文件时,这是非常令人沮丧的。

我在这里附上我的代码:

directory = 'E:/'
with open(os.path.join(directory, 'output_file.bat'), 'w') as OPATH:
    OPATH.writelines(['"""',"\n"'E:',"\n",
                      'javacCreatingUser.java',"\n",'javaCreatingUser',"\n",'"""'])

os.system("E:/output_file.bat")

上面是我的Python代码,它使用2个java命令创建一个bat文件

  1. javac 创建用户.java
  2. java 创建用户

我可以手动运行 .bat 文件,它工作正常,但我的 python 脚本给出以下错误:

java.lang.NoClassDefFoundError: oracle/iam/identity/exception/ValidationFailedException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.privateGetMethodRecursive(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: oracle.iam.identity.exception.ValidationFailedException
    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)
    ... 7 more
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" '"""' is not recognized as an internal or external command,

operable program or batch file.

问题是,如果我的文件中缺少某些类,那么它也不应该手动执行,但手动执行是可以的。

最佳答案

javac CreatingUser.java
java CreatingUser

这就是问题的根源:您只编译一个类文件,然后在没有类路径的情况下调用该类。

Java 有一个类似于 Python PYTHONPATH 的类搜索路径,名为 classpath .

您可以尝试一下:

javac CreatingUser.java
java -classpath YOUR_CLASSPATH CreatingUser

YOUR_CLASSPATH 可以是以冒号 (Linux) 或分号 (Windows) 分隔的 JAR 文件和包含类文件的目录列表。让您的类路径指向您需要的 JAR,就可以了。

关于java - 在Python中运行包含java命令的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440486/

相关文章:

java - 如何在 XML Pull Parser 中获取特定节点值

java - 在 HttpSession 中 session = request.getSession(); "request"对象在哪里定义的?

windows - 在 "call :loop"中完全停止批处理文件

java - 如何启动 Web 服务器并在完成后将浏览器指向它?

java - 用另一个最终静态变量初始化最终静态变量的内存消耗

具有重载和覆盖的 Java 方法选择

python - 我应该把包裹内的元素放在哪里?

python - Python 抽象基类可以强制执行函数签名吗?

python - 如何改变python中的时间?

windows - 如何移动鼠标光标并单击?