Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP代码中运行Java程序_Java_Php_Maven_Mahout - Fatal编程技术网

在PHP代码中运行Java程序

在PHP代码中运行Java程序,java,php,maven,mahout,Java,Php,Maven,Mahout,我正在尝试制作一个简单的推荐系统,我发现使用mahout很容易制作一个推荐系统。我有以下代码,我正在eclipse上运行它,一切都很好: package com.predictionmarketing.RecommenderApp; import java.io.File; import java.io.IOException; import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.

我正在尝试制作一个简单的推荐系统,我发现使用mahout很容易制作一个推荐系统。我有以下代码,我正在eclipse上运行它,一切都很好:

package com.predictionmarketing.RecommenderApp;

import java.io.File;
import java.io.IOException;

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;


/**
 * Java's application, user based recommender system
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        // Modelo
        DataModel model = null;

        // Inicializar similaridad
        UserSimilarity similarity = null;

        // Leer .cv  userID, itemID, value
        try {
            model = new FileDataModel(new File("data/dataset.csv"));
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

        // Encontrar matriz de similaridad
        try {
            similarity = new PearsonCorrelationSimilarity(model);
        } catch (TasteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
        UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
        java.util.List<RecommendedItem> recommendations = null;
        try {
            recommendations = recommender.recommend(2, 3);
        } catch (TasteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // Mostrar Recomendaciones
        for (RecommendedItem recommendation : recommendations) {
          System.out.println(recommendation.getItemID());
        }
    }

}

但是,我需要在线运行这段代码,因为我在PHP上创建应用程序,这就是我的问题所在。有没有办法在PHP上运行这段代码,这样我就可以使用推荐变量了?

没有简单的解决方案。要使它工作并与PHP通信,您必须为它创建一些接口。例如,创建Javaservlet,并将其放在JavaWeb服务器的servlet容器中。这是我现在看到的最简单的


其他解决方案,您还可以考虑REST或SOAP服务,在java代码和PHP应用程序之间交换数据。这也需要JavaEE容器。

您可以使用从php代码首先编译的java代码运行


但是,更好的解决方案是构建一个REST服务还是另一个不依赖语言的解决方案。

这样我才能确保正确理解这个问题。你只是想找出一种从PHP调用Java代码的方法吗?是的,原则上这就是我想做的。你还有其他问题吗?或者我的答案对你的问题有效吗?我试过了,但不起作用。它与echo hello world之类的命令配合得很好。但是我试着运行一个编译过的java程序,但它没有运行,它没有打印任何东西,我不知道为什么。我甚至用shell_exec'printf asd'进行了测试,但这也不起作用。shell_exec用于运行shell命令。如果hello world正在运行,则编译的java程序必须运行。您是否尝试过先从shell直接运行java程序?是的。我试过了,实际上它有我想要的输出。也许是因为我在本地主机上,错过了一步?类似于在本地主机或IDK上安装java。对不起,我是一个noob:。也许,请检查您的环境配置;解决了,这是一个相对路径的问题。