2016-12-15 125 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 \建立\班 –