【发布时间】:2016-12-15 10:09:47
【问题描述】:
嗨朋友们,我必须从 php 脚本执行 java 应用程序,因为我已将 jre 文件夹文件移动到 xammp 文件夹并设置文件夹的路径。
我已经使用像
这样的示例 java 程序进行了测试PHP 脚本:
<?php
$JAVA_HOME = "\jre1.8.0_60";
$PATH = "$JAVA_HOME/bin:".getenv('PATH');
putenv("JAVA_HOME=$JAVA_HOME");
putenv("PATH=$PATH");
//enter rest of the code here
shell_exec("java HelloWorld.java 2>&1");
$OUTPUT = shell_exec("java HelloWorld 2>&1");
echo $OUTPUT;
?>
如果我通过 PHP 执行文件,我已将 java 文件放在“C:\xampp\htdocs\java_bridge\”中,结果将被执行。
HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
// Prints "Hello, World" to the terminal window.
System.out.println("Hello, World");
}
}
输出:
你好,世界
ExtractPagesFromPdfAndSaveAsNewPDFPage.java :
import java.io.File;
import java.util.List;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
/**
*
* @author udaykiran.pulipati
*
*/
@SuppressWarnings("unchecked")
public class ExtractPagesFromPdfAndSaveAsNewPDFPage {
public static void main(String[] args) {
try {
// String sourceDir = "C:\\Users\\user1\\Desktop\\java_pdf_split\\scan.pdf";
String sourceDir = "C:\\Users\\user1\\Desktop\\java_pdf_split\\scan.pdf";
String destinationDir = "C:/PDFCopy/";
File oldFile = new File(sourceDir);
String fileName = oldFile.getName().replace(".pdf", "");
System.out.println("New Filename: " + fileName);
System.out.println("Old Filename: " + oldFile.getName());
if (oldFile.exists()) {
File newFile = new File(destinationDir);
if (!newFile.exists()) {
newFile.mkdir();
}
PDDocument document = PDDocument.load(sourceDir);
List<PDPage> list = document.getDocumentCatalog().getAllPages();
int pageNumber = 1;
for (PDPage page : list) {
PDDocument newDocument = new PDDocument();
newDocument.addPage(page);
newFile = new File(destinationDir + fileName + "_"+ pageNumber +".pdf");
newFile.createNewFile();
newDocument.save(newFile);
newDocument.close();
pageNumber++;
}
} else {
System.err.println(fileName +" File not exists");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
但是现在我必须执行一个名为 Java application1 的 java 应用程序,因为如果我必须执行这个,我有一个名为“ExtractPagesFromPdfAndSaveAsNewPDFPage”的 java 文件,我应该如何给出 exec 路径(“”);
我的应用路径是“C:\xampp\htdocs\java_bridge\JavaApplication1\src”;
我的类文件路径是“C:\xampp\htdocs\java_bridge\JavaApplication1\build\classes”;
如果我运行
shell_exec("javac \JavaApplication1\src\ExtractPagesFromPdfAndSaveAsNewPDFPage.java 2>&1");
$OUTPUT = shell_exec("java \JavaApplication1\build\classes\ExtractPagesFromPdfAndSaveAsNewPDFPage 2>&1");
它将输出返回为 错误:
错误:无法找到或加载主类 \JavaApplication1\build\classes\ExtractPagesFromPdfAndSaveAsNewPDFPage
请任何人告诉我如何通过 php 脚本执行 java 应用程序。
提前致谢。
【问题讨论】:
-
验证你的java类的路径。为什么不放完整的java类路径?
-
@Sonor:我已经给出了类 shell_exec("javac C:\\xampp\\htdocs\\java_bridge\\JavaApplication1\\src\ExtractPagesFromPdfAndSaveAsNewPDFPage.java 2>&1"); 的完整路径。 $OUTPUT = shell_exec("java C:\\xampp\\htdocs\\java_bridge\\JavaApplication1\\build\\classes\\ExtractPagesFromPdfAndSaveAsNewPDFPage 2>&1");回声$输出;但仍然出现同样的问题
标签: java php shell-exec