【问题标题】:Inline::java STUDY configurationInline::java STUDY 配置
【发布时间】:2014-08-31 00:57:41
【问题描述】:

内联文档对学习如何使用 STUDY 配置没有太大帮助, 谁能阐明调用打印方法的简单 void 方法所涉及的语法,例如 Hello() ?

另外,对于外部 java 文件,我需要把它放在一个特定的目录中,还是放在 perl 脚本的同一目录中?

【问题讨论】:

  • 这是一个非常狭窄的主题(使用 Inline::Java 在 Perl 脚本中包含 Java 代码),恐怕您可能需要一段时间才能看到答案。订阅并在 inline@perl.org 上发帖可能会更好。详情请见lists.perl.org。

标签: perl inline perl-module


【解决方案1】:

让我们从文件/home/foo/java_src/Hello.java开始,它包含:

public class Hello {
    public Hello() {}
    public void instance_hello() { System.out.println("hello world"); }
    public static void static_hello() { System.out.println("HELLO WORLD"); }
}

首先解决您的第二个问题,use Inline Java ... 之后的第一个参数可以是文件名,因此您可以将源文件放在任何地方并在 perl 代码中通过其文件名引用它:

use Inline Java => '/home/foo/java_src/Hello.java';
$obj = Hello->new();
$obj->instance_hello();      # "hello world"
Hello->static_hello();       # "HELLO WORLD"

请注意,目前您不需要STUDY。 Hello 类在源代码中定义,由 Inline::Java 模块直接读取,因此该模块会自动创建并填充 Perl 中的 Hello 命名空间。

STUDY 用于Inline::Java 不直接解析的类。因此,假设我们的Hello 类已被编译成一个名为/home/foo/jars/hello.jar 的jar 文件。现在要使用 Hello 类,您需要 (1) 在 CLASSPATH 中包含 hello.jar 和 (2) 使用 STUDY 告诉 Inline::Java 创建 Hello 命名空间:

use Inline Java => 'STUDY',
    CLASSPATH => '/home/foo/jars/hello.jar',
    STUDY => ['Hello'];
$obj = Hello->new;
Hello->static_hello;     # "HELLO WORLD"
$obj->instance_hello;    # "hello world"

我们包含第一个参数STUDY 以向Inline::Java 发出信号,表明我们没有将任何源代码直接传递给模块。我们也可以传递有效的源代码或有效的源代码文件名。

use Inline Java => 'public class Nothing() { }',
    CLASSPATH => '/home/foo/jars/hello.jar',
    STUDY => ['Hello'];

【讨论】:

    猜你喜欢
    • 2015-05-11
    • 2018-12-13
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 2023-03-21
    • 2020-09-19
    相关资源
    最近更新 更多