繁体   English   中英

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

[英]Run a batch file in Python which contains java command

当手动执行时无法在 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 CreatingUser.java
  2. java CreatingUser

我可以手动运行 .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,您就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM