我有一个在CPython实现上运行的python程序,并且在其中必须调用在Java程序中定义的函数。我怎样才能做到这一点?
能够使用一些Java对象也将是一件很棒的事。
Jython不是一个选择。我必须在CPython中运行python部分。
最简单的事情是
public class ExposeAMethod {
public static void main( String args[] ) {
TheClassToExpose x = new TheClassToExpose();
x.theFunction();
}
}
以此为入口编译并构建可执行的JAR文件。称它为 ExposeAMethod.jar
从子流程创建的命令中调用它。
import subprocess
p = subprocess.Popen("java -jar ExposeAMethod.jar", shell=True)
sts = os.waitpid(p.pid, 0)
这是最低要求。而且确实不多。我数了6行Java,3行Python,您就可以运行了。
如果要将参数传递给此Java类构造函数或方法函数,则必须再编写几行代码。您有两种选择。
从stdin读取参数,将结果写入stdout。这是相对容易的,并且性能非常好。
将参数解析为Java的命令行选项,然后将结果写入stdout。这有点困难,但概括性很好。好处是,您现在拥有一个可以重复使用的有用的命令行Java程序。
问题内容: Java代码: Scala代码: 命令行: 问题答案: 我将从使用java.util.Timer开始,而不是从javax.swing.Timer开始。除非您使用GUI运行应用程序,否则swing计时器将不起作用(即,如果您在没有特殊命令行参数的情况下通过控制台在Linux上运行它,则它将不起作用- 最好避免)。 放在一边: 请确保在尝试运行代码时,在类路径中包含scala-librar
问题内容: 我需要从Java调用C#函数,为此,我创建了以下代码。我有一个创建的Java头文件Authenticator.h,代码如下: 然后,我创建了一个身份验证的C#函数 然后,我尝试使用以下代码从C ++(项目创建dll)中调用C#函数; 最后创建一个需要从Java调用的dll。该dll已创建,并且可以在Java中很好地加载它,但是在Java中却收到此错误日志。我可能会错过什么。 问题答案:
问题内容: 如何从C ++应用程序调用Java函数? 我知道从CMD(或类似技术)调用它们的方法,但我宁愿不使用它们。 问题答案: 例如,检查从C创建JVM。它显示了创建JVM和调用方法的示例过程。如果JVM已经存在;例如,您的C程序被Java程序调用(回调情况),则可以缓存JNIEnv *指针。 作为建议,请小心从C / C ++缓存指向JVM的指针,其中涉及到一些有关可以缓存的内容的语义,以后
我很难理解如何只调用一次具有多个对象的函数(在for循环中)。 我试图写一个代码,其中对象的信息应该传递给另一个函数。 以下面的程序为例,函数被多次调用,而不是一次。 因为函数在循环中被调用了三次,所以一次只接受一个参数,而期望的输出应该是这样的: 那么,我如何一次调用函数,让它一次接受所有参数呢?感谢您的帮助。谢谢
问题内容: 我很清楚如何用C ++扩展Python,但是如果我想用Java编写要与numpy一起使用的函数怎么办? 这是一个简单的场景:我想使用Java类来计算numpy数组的平均值。如何将numpy向量传递给Java类并收集结果? 谢谢你的帮助! 问题答案: 我花了一些时间回答自己的问题,并希望分享我的答案,因为我觉得关于 stackoverflow的 这个主题的信息不多。我还认为,由于Java
问题内容: 是否可以从Javascript调用Java(GWT)方法?从文档中也不清楚。http://code.google.com/intl/zh- CN/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html上的 所有示例都演示了如何从JSNI(而非JS)函数调用Java函数。 更新1 这是一个Java代码: 这是html中的呼叫者按钮示例: 这