我无法在这个主题上找到一个开箱即用的例子。
我在同一个项目中成功地从Frege到Frege,以及从Java到Java的调用,但是我无法通过.java文件来识别.fr文件
我应该采取哪些步骤才能使以下代码生效(在Consumer.java中)
我的基本设置如下:
我安装了eclipse-plugin并按照说明进行操作。
java version "1.7.0_79"
Project Builders按以下顺序:
Frege builder
Java Builder
项目路径:
* src
- package tutorials
-- Consumer.java
-- FregeProducer.fr
* Referenced Libraries
- fregec.jar
* JRE System Library
- ...
消费者:
package tutorials;
public class Consumer {
public static void main(String[] args) {
System.out.println("This should be zero: " + FregeProducer.myZero);
}
}
FregeProducer:
module FregeProducer where
myZero = 0
答案 0 :(得分:2)
据我所知,你的设置没问题。但是,您似乎遇到了Java限制,该限制不允许在命名包中的类中使用未命名包中的类。
我们在这里尝试使用FregeProducer
中的tutorials.Consumer
类中的某些内容,而Java规则不会起作用。
您需要将模块名称指定为tutorials.FregeProducer
。 (不足以仅将源文件放在tutorials
目录中。)然后您的未更改的Java代码应该可以工作,恕我直言。
当然,您可以在任何所需的包中生成Frege类。为此,您需要将源文件移动到相应的目录中,然后选择适当的模块名称。请记住,模块名称(以及仅模块名称,源文件名和位置都没有)确定已编译类的完全限定类名:
module Foo where -- creates class Foo in unnamed Java package
module com.bar.Foo where -- creates class Foo in Java package com.bar