Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中运行包含java命令的批处理文件_Java_Python_Batch File - Fatal编程技术网

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

在Python中运行包含java命令的批处理文件,java,python,batch-file,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

在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文件

  • javac CreatingUser.java
  • java CreatingUser
  • 我可以手动运行.bat文件,它工作正常,但我的python脚本显示以下错误:

    java.lang.NoClassDefFoundError:oracle/iam/identity/exception/ValidationFailedException
    位于java.lang.Class.getDeclaredMethods0(本机方法)
    位于java.lang.Class.privateGetDeclaredMethods(未知源)
    位于java.lang.Class.privateGetMethodRecursive(未知源)
    位于java.lang.Class.getMethod0(未知源)
    位于java.lang.Class.getMethod(未知源)
    位于sun.launcher.launchelper.validateMainClass(未知源)
    位于sun.launcher.LaunchHelper.checkAndLoadMain(未知源)
    原因:java.lang.ClassNotFoundException:oracle.iam.identity.exception.ValidationFailedException
    位于java.net.URLClassLoader.findClass(未知源)
    位于java.lang.ClassLoader.loadClass(未知源)
    位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
    位于java.lang.ClassLoader.loadClass(未知源)
    ... 还有7个
    错误:发生JNI错误,请检查安装并重试
    线程“main”“中的异常未被识别为内部或外部命令,
    可操作的程序或批处理文件。
    
    问题是,如果我的文件中缺少一些类,那么它也不应该手动执行,但是手动执行是可以的。

    javac CreatingUser.java
    java创作语言器
    
    这就是问题的根源:您只编译了一个类文件,然后调用该类而没有类路径

    Java有一个类似于python
    PYTHONPATH
    called的类的搜索路径

    您可以尝试一下:

    javac CreatingUser.java
    java -classpath YOUR_CLASSPATH CreatingUser
    

    您的\u CLASSPATH
    可以是冒号(Linux)或分号(Windows)JAR文件和包含类文件的目录的单独列表。让您的类路径指向您需要的JAR,这样您就可以了。

    您的writeline中javac之后是否需要一个空格?windows系统上的路径中有反斜杠,而不是正斜杠。感谢您的帮助,但是我已经在我的环境v中更新了类路径Ariable以及为什么我能够手动执行bat文件而不传递类路径,但不通过您想要的python脚本
    E:\output\u file.bat
    。在类路径中使用绝对路径。相对路径将始终取决于您当前的工作目录。