在最终 Jar 中包含 php 文件,以便方法可以调用 php 文件
include php file in final Jar so that method can call php file
我正在使用来自 java 代码的 php 文件,例如
Class JavaPhpTest{
public void method1(){
Process p = Runtime.getRuntime().exec("/usr/local/php/bin/php " + "test.php")
}
}
我将 test.php
(文件位于 /src/main/resources
)文件包含在 pom.xml
中作为此 java 项目的资源,并且在构建 test.php
之后在罐子里。
现在,当有人在他们的 pom.xml
中使用 JavaPhpTest-jar
作为依赖项并像
一样调用 method1()
时
class javaCall{
public void testing(){
new JavaPhpTest().method1();
}
问题是,现在当我调用 testing()
时,它给出了找不到 test.php
的错误。
我看到 JavaPhpTest-jar
在 javaCall 的类路径中,但没有 php。
任何人都可以建议我们如何解决这个依赖问题吗?
我是否也应该为 php 创建一个 pom 项目并将其包含在内?如果是这样,有人可以让我工作 link 来做到这一点。
如果你想执行 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 代码的 php 文件,例如
Class JavaPhpTest{
public void method1(){
Process p = Runtime.getRuntime().exec("/usr/local/php/bin/php " + "test.php")
}
}
我将 test.php
(文件位于 /src/main/resources
)文件包含在 pom.xml
中作为此 java 项目的资源,并且在构建 test.php
之后在罐子里。
现在,当有人在他们的 pom.xml
中使用 JavaPhpTest-jar
作为依赖项并像
method1()
时
class javaCall{
public void testing(){
new JavaPhpTest().method1();
}
问题是,现在当我调用 testing()
时,它给出了找不到 test.php
的错误。
我看到 JavaPhpTest-jar
在 javaCall 的类路径中,但没有 php。
任何人都可以建议我们如何解决这个依赖问题吗?
我是否也应该为 php 创建一个 pom 项目并将其包含在内?如果是这样,有人可以让我工作 link 来做到这一点。
如果你想执行 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"));