2016-12-15 91 views
2

嗨朋友我必须从php脚本执行java应用程序,为此我已将jre文件夹文件移至xammp文件夹并将路径设置为该文件夹。从Php执行Java应用程序

我已用样品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; 
?> 

我已经放置与java文件 “C:\ XAMPP \ htdocs中\ java_bridge \” 如果我执行通过PHP文件执行结果。

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应用程序名称Java应用程序ication1与我有一个名为“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 \建立\类\ ExtractPagesFromPdfAndSaveAsNewPDFPage

请任何一个让我知道如何执行一个Java应用程序通过PHP脚本。

在此先感谢。

+0

验证你的java类的路径。为什么不把完整的java类路径? – thepaulo

+0

@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 \\筹建\\类\\ ExtractPagesFromPdfAndSaveAsNewPDFPage 2> &1"); 回波$ OUTPUT; ,但仍然会出现同样的问题 –

回答

0

您也可以使用PHP

的exec方法对于编译:

<?php exec("javac C:\fakepath\file.java", $output); ?> 

对于执行:

<?php exec("java C:\fakepath\file arguments", $output); ?> 

为了执行一个jar文件:

<?php exec("java -jar C:\fakepath\file.jar arguments", $output); ?> 
+0

同样的结果“错误:无法找到或加载主类” –

+0

如何编译您的类?请确认您的路径中有.class文件 – thepaulo

+0

是的,我有一个名为ExtractPagesFromPdfAndSaveAsNewPDFPage.class的类文件 位于路径 C:\ XAMPP \ htdocs中\ java_bridge \ JavaApplication1 \建立\班 –