簡體   English   中英

JFuzzyLogic 在 Eclipse IDE 中出錯,而代碼在另一個 IDE 中運行良好

[英]JFuzzyLogic gives error in Eclipse IDE while code working well with another IDE

雖然相同的代碼在 NetBeans IDE 中工作,但在 eclipse 上出現此錯誤! 運行代碼並提供輸入后,我收到此錯誤

線程“main”中的異常 java.lang.NoClassDefFoundError: 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.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders. java:178) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 2 更多

Resturant.java文件

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

程序.java文件

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

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

在這一點上我所能做的就是指出你沒有提供的信息,這會告訴我們問題是什么。 您的項目有源代碼,例如“Restaurant”類,但它也有依賴項,例如“net.sourceforge.jFuzzyLogic.FIS”類。 后一個類不包含在您的項目中,必須將其指定為依賴項。 Eclipse 項目可以通過多種方式指定依賴項,並且必須謹慎完成。

我們不知道你是如何指定對那個類“net.sourceforge.jFuzzyLogic.FIS”的依賴的,甚至你根本不知道。 您可能正在使用 Maven 來構建您的項目,這意味着您正在使用“m2e”Eclipse 插件。 您也可以使用 Ant,盡管我對此表示懷疑。 您也可能根本不使用構建系統,這意味着您必須打算將包含該類的 jar 文件直接存儲在項目的子目錄中,並指定對該 jar 的直接依賴。

我們也不知道你是如何運行這個項目的。 您很可能直接在 Eclipse 中運行它,但我可能是錯的。

我想通了是什么問題,這是添加FazzyLogic庫的方式! 我沒有將它添加到類路徑中,而是將其添加到模塊路徑中! 我對 java 和 eclipse IDE 都沒有經驗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM