【问题标题】:How to call Frege from Java in Eclipse?如何在 Eclipse 中从 Java 调用 Frege?
【发布时间】:2015-07-22 04:58:05
【问题描述】:

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

我在同一个项目中成功地从 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 

【问题讨论】:

    标签: java eclipse frege


    【解决方案1】:

    据我所知,您的设置没问题。但是,您似乎遇到了 Java 限制,该限制不允许在已命名包中的类中使用未命名包中的类。

    我们在这里尝试在tutorials.Consumer 中使用类FregeProducer 中的某些内容,而这不符合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
    

    【讨论】:

    • 当我尝试向 FregeProducer 添加包声明时,它仍然无法解决依赖关系。不幸的是,第二种方法对我也不起作用。我创建了一个名为“fregepkg”的新包,移动了 FregeProducer 并将其重命名为“fregepkg.FregeProducer”。它与 .java-Files 使用相同的设置:(
    • @Cirquit 嗯。我需要进一步调查。它应该可以工作,但您之前的尝试不可能成功。
    • @Cirquit 显然,它仅在将 bin/ 目录作为“外部文件夹”添加到构建路径时才有效。在您刷新 Navigator-View 中的 bin/ 目录之前,Eclipse 仍不会拾取 FregeProducer.class 文件。也许最好将 Frege 文件放在一个单独的项目中并从纯 Java 项目中引用它们?
    • 如您所描述的那样工作!如果我添加 bin/ 目录(使用另一个名称,否则他不会接受它)它会看到常量。当这对于我的基本示例来说已经不够用时,我将尝试这个项目的想法!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多