【问题标题】:Running a Java program in a Perl/CGI script在 Perl/CGI 脚本中运行 Java 程序
【发布时间】:2011-08-15 02:33:30
【问题描述】:

我有一个使用外部库和我用 Java 编写的代码的程序。但是,我想通过网络访问它。

如果我可以完全控制运行它的网络服务器,我可能会使用 Tomcat 或 JBoss,但我在学校没有这样的权限。

我有权访问的服务器安装了所有普通 Linux 好东西的 Apache HTTP 服务器(想想:Perl、PHP 等)

如何编写运行这个 Java 程序的 Perl 脚本? 我已经尝试过诸如“system java MyProgram”和“exec java MyProgram”之类的基础知识,但它们似乎不起作用。

我将不胜感激任何帮助或对此的见解。谢谢!

【问题讨论】:

  • 我已经看过了。我不断收到“找不到 JPL/Class.pm”,这就是我放弃该策略的原因。它没有提到必须包含其他库或类似的东西。
  • 您的服务器是否安装了 Java VM?即,system("java -v") 的输出是什么(或您的宿主语言中的任何语法)?
  • "java -version" 通过终端返回:java version "1.6.0_18" OpenJDK Runtime Environment (IcedTea6 1.8) (fedora-38.b18.fc12-i386) OpenJDK Server VM (build 14.0-b16) , 混合模式)
  • "perl test.pl" 通过终端返回相同的内容 使用 Web 浏览器通过 cgi 运行脚本返回 -1

标签: java perl apache


【解决方案1】:

处理过程;

    try
    {
      process = Runtime.getRuntime().exec("cmd / c start c:\\Perl\\bin\\file.pl");

尝试按照你的程序这样运行。

【讨论】:

    【解决方案2】:

    当您运行 CGI 脚本时,环境非常有限,这包括 PATH。您的 CGI 脚本是否有可能找不到 java 命令?或者也许 Perl 只是拒绝在 CGI 模式(又名 taint 模式)下运行system 命令。请参阅perldoc perlsec 了解更多信息。

    基本上,您需要设置 PATH,然后尝试使用您的 java 命令运行您的 system 命令。

    【讨论】:

      【解决方案3】:

      试试这个:

      system('/full/path/to/java -cp full_class_path my.class.Name');
      

      【讨论】:

        猜你喜欢
        • 2015-05-27
        • 2014-09-16
        • 1970-01-01
        • 2013-03-11
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        相关资源
        最近更新 更多