java - 在最终的 Jar 中包含 php 文件,以便方法可以调用 php 文件

标签 java php maven jar classpath

我正在使用来自java代码的php文件,例如

Class JavaPhpTest{
    public void method1(){
Process p = Runtime.getRuntime().exec("/usr/local/php/bin/php " + "test.php")
    }
}

我在 pom.xml 中包含了 test.php (文件驻留在 /src/main/resources 中)文件作为该 java 的资源项目并在构建后 test.php 位于 Jar 中。

现在,当有人在其 pom.xml 中使用 JavaPhpTest-jar 作为依赖项并像

那样调用 method1()
class javaCall{
public void testing(){
    new JavaPhpTest().method1();
}

问题是,现在当我调用 testing() 时,它会给出找不到 test.php 的错误。

我看到 JavaPhpTest-jar 在 javaCall 的类路径中,但没有 php.ini。 有人可以建议我们如何解决这个依赖问题吗?

我是否也应该为 php 创建一个 pom 项目并包含它?如果是这样,有人可以给我提供工作链接来做到这一点。

最佳答案

如果你想执行test.php,你必须从Jar读取文件内容并保存为常规文件,在临时文件夹中。在这里您可以找到示例:getResourceAsStream() doesn't see resource

然后使用临时文件夹中的文件路径调用Runtime.getRuntime().exec(..)

更新

我看到了你的解决方案,它可能会被简化:

InputStream phpStream = JavaPhpTest.class.getResourceAsStream("/test.php");
java.nio.file.Files.copy(phpStream, Paths.get("test.php"));

关于java - 在最终的 Jar 中包含 php 文件,以便方法可以调用 php 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37162176/

相关文章:

java - Tomcat 基本认证权限问题

java - 在 Mac 上合并来自 Processing 的 JAR 文件

java - 如何在hibernate中对composite-id键属性应用过滤器

php - getimagesize() 错误 : "failed to open stream: No such file or directory"

java - Spring boot + H2 Db 到文件 +/h2-console

rest - Nexus 存储库中所有 Artifact 的列表

java - Java应用中的半静态字段

php - 在开发人员工具打开之前,链接在 Chrome 和 Firefox 中不可点击

javascript - AngularJS PUT 与 Symfony2 PUT 方法。更新不起作用

android - 运行用于自动化构建的JUNIT测试-如何?