首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFuzzyLogic在Eclipse中出现错误,而代码与另一个IDE运行良好

JFuzzyLogic在Eclipse中出现错误,而代码与另一个IDE运行良好
EN

Stack Overflow用户
提问于 2020-11-07 10:18:40
回答 2查看 286关注 0票数 0

虽然相同的代码在NetBeans IDE中工作,但它在eclipse上会出现此错误!在运行代码并给出输入后,我得到了这个错误

线程"main“中的java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)异常: net/sourceforge/jFuzzyLogic/FIS at pkt.Resturant.(Resturant.java:17) at pkt.Program.main(Program.java:15),原因是: java.lang.ClassNotFoundException: net.sourceforge.jFuzzyLogic.FIS在java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)的java.base/java.lang.ClassLoader上。loadClass(ClassLoader.java:521) .2

Resturant.java文件

代码语言:javascript
复制
package pkt;

import java.io.File;
import java.net.URISyntaxException;

import net.sourceforge.jFuzzyLogic.FIS;

public class Resturant {
    private FIS fis;
    private double servis;
    private double yemek;

    public Resturant(double servis, double yemek) throws URISyntaxException {
        this.servis = servis;
        this.yemek = yemek;
        File dosya = new File(getClass().getResource("Model.fcl").toURI());
        fis = FIS.load(dosya.getPath(), true);
        fis.setVariable("servis", servis);
        fis.setVariable("yemek", yemek);
        fis.evaluate();
    }

    public Resturant() throws URISyntaxException {
        File dosya = new File(getClass().getResource("Model.fcl").toURI());
        fis = FIS.load(dosya.getPath(), true);
    }

    public FIS getModel() {
        return fis;
    }

    @Override
    public String toString() {
        String cikti = "servis: " + servis + "\nYemek: " + yemek + "\nTur: " + fis.getVariable("tur").getValue();
        return cikti;
    }
}

Program.java文件

代码语言:javascript
复制
package pkt;

import java.net.URISyntaxException;
import java.util.Scanner;
import net.sourceforge.jFuzzyLogic.plot.JFuzzyChart;

public class Program {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
                System.out.print("Servis (0-9): ");
        double servis = in.nextDouble();
        System.out.print("Yemek (0-9): ");
        double yemek = in.nextDouble();
        try {
            Resturant r = new Resturant(servis,yemek);
                        System.out.print(r);
        } catch(URISyntaxException e) {
            e.printStackTrace();
        }
    }
}

和JFuzzyLogic文件Model.fcl

代码语言:javascript
复制
FUNCTION_BLOCK model

VAR_INPUT
    servis : REAL;
    yemek : REAL;
END_VAR

VAR_OUTPUT
    tur : REAL;
END_VAR

FUZZIFY servis
    TERM kotu := (0,1)(4,0);
    TERM iyi := (1,0)(4,1)(6,1)(9,0);
    TERM mukemmel := (6,0)(9,1);
END_FUZZIFY

FUZZIFY yemek
    TERM kotu := (0,1)(3,1)(6,0);
    TERM lezzetli := (4,0)(9,1);
END_FUZZIFY

DEFUZZIFY tur
    TERM ucuz := (0,1)(20,1)(50,0);
    TERM orta := (40,0)(60,1)(80,0);
    TERM iyi := (70,0)(85,1)(100,0);
    METHOD : COG;
    DEFAULT := 0;
END_DEFUZZIFY

RULEBLOCK kuralblock1
    AND : MIN;
    ACT : MIN;
    ACCU : MAX;
    
    RULE 1 : IF servis IS kotu OR yemek IS kotu THEN tur IS ucuz;
    RULE 2 : IF servis IS iyi THEN tur IS orta;
    RULE 3 : IF servis IS mukemmel AND yemek IS lezzetli THEN tur IS iyi;
    
END_RULEBLOCK

END_FUNCTION_BLOCK
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-15 23:53:53

我发现了问题所在,它是添加FazzyLogic库的方法!我没有将它添加到Classpath中,而是将它添加到Modulepath中!我对java和eclipse都没有经验。

票数 0
EN

Stack Overflow用户

发布于 2020-11-07 17:34:10

在这一点上,我所能做的就是指出你没有提供的信息,这将告诉我们问题的所在。您的项目有源代码,比如类"Restaurant",但是它也有依赖项,比如类"net.sourceforge.jFuzzyLogic.FIS“。项目中不包含后一个类,必须将其指定为依赖项。Eclipse项目有几种方法可以指定依赖项,它们必须小心执行。

我们不知道您是如何指定该类"net.sourceforge.jFuzzyLogic.FIS“的依赖项的,甚至根本不知道。您可以使用Maven构建您的项目,这意味着您正在使用"m2e“Eclipse。您也可以使用Ant,尽管我对此表示怀疑。您也可以不使用任何构建系统,这意味着您必须将包含该类的jar文件直接存储在项目的子目录中,并指定了对该jar的直接依赖关系。

我们也不知道你是怎么运作这个项目的。您很可能在Eclipse中直接运行它,但我可能错了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64726649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档