如何解决替代 JAVA 中的 python“Execfile”?
我想知道是否有与 execfile(从 Python)到 java 相同的命令?
解决方法
我不确定我是否理解您想要实现的目标,但这里有几个选项。
如果您尝试在 Java 中执行 Python 文件,如注释中所建议的,您可以使用 PythonInterpreter
类,它非常易于使用。下面是一个简单的例子,摘自网络:
import org.python.util.PythonInterpreter;
...
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("C:/path/to/file/__main__.py");
但是,如果你正在寻找类似但适用于Java文件的东西,恐怕就没有那么容易了。
首先,Java是一个两阶段的语言:
- 类(在 .java 文件中实现)由编译器(即
javac
命令)编译,并转换为字节码(.class 文件) - 字节码由 JVM 执行(即
java
命令),它实际上是一个解释器。
此外,您实际上不能将 Python execFile
函数应用于字节码,这也是因为类不是脚本,而是可以在程序中实例化和使用的对象的表示。
作为最后一个选项,如果您正在寻找一种操作字节码的方法,例如通过动态加载和分析类,有几个库可以用于此目的。例如 JavaAssist 就是其中之一。
这是一个如何加载类的简单示例:
// directory: path which class files were written
// className: fully qualified name of the class you want to load.
File f = new File(directory);
java.net.URL[] urls = new java.net.URL[] { f.toURI().toURL() };
ClassLoader cl = new URLClassLoader(urls,loader);
Class cls = cl.loadClass(className);
一旦你得到一个 Class
对象的实例,你可以对它们做很多事情:获取名称、类型、超类、方法、成员等的信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。