3

我在这个主题上找不到一个开箱即用的例子。

我成功地在同一个项目中从 Frege 调用到 Frege,以及从 Java 到 Java,但我无法让 .java 文件识别 .fr 文件

我应该遵循哪些步骤才能使以下代码正常工作(在 Consumer.java 中)

我的基本设置如下所示:

我安装了 eclipse-plugin 并按照说明进行操作。

java version "1.7.0_79"

项目生成器按以下顺序:

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);
    }   
}

弗雷格制片人:

module FregeProducer where

myZero = 0 
4

1 回答 1

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
于 2015-07-21T20:47:37.463 回答