2016-12-15 21 views
2

こんにちは私はphpスクリプトからjavaアプリケーションを実行する必要があります。そのためには、jreフォルダファイルをxammpフォルダに移動し、そのフォルダへのパスを設定してください。PHPからJavaアプリケーションを実行

私は

PHPスクリプトのように、サンプルのJavaプログラムを使用してテストしている:私は中にjavaファイルを配置している

<?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; 
?> 

"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アプリケーション私がこれを実行しなければならない場合、 "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

いずれか私にPHPスクリプトを介してJavaアプリケーションを実行する方法を教えてください。

ありがとうございます。

あなたはまた、コンパイルするためのPHP

のexecメソッドを使用することができます

+0

を確認しますあなたのJavaクラスのパスなぜ完全なJavaクラスパスを入れないのですか? – thepaulo

+0

@ Soonor:クラス 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("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

あなたのパス – thepaulo

+0

内の.classファイルを持っていることを確認してくださいはい、私はパス でExtractPagesFromPdfAndSaveAsNewPDFPage.class という名前のクラスファイルを持っています? C:\ xampp \ htdocs \ java_bridge \ JavaApplication1 \ build \ classes –

関連する問題