Java ClassNotFoundException在Eclipse中,所有包都位于同一src文件夹中

Java ClassNotFoundException在Eclipse中,所有包都位于同一src文件夹中,java,eclipse,classnotfoundexception,Java,Eclipse,Classnotfoundexception,我正在开发一个从控制台运行的计算器程序,它也应该支持创建内联函数,例如inline\u FOO{a1,a2}a1+a2声明函数,调用\u FOO{2,3}应该返回2+3。我使用一个转换器类来完成所有的解析和计算。 我在同一个包中创建了一个名为InlineFunction的类,该类保存了程序默认函数的实现,这些函数都可以正常工作,但在尝试调用内联函数时,我遇到了一个错误。 调试时,我注意到,当程序运行正常,直到我实际声明一个新的内联函数时,InlineFunction Function=newin

我正在开发一个从控制台运行的计算器程序,它也应该支持创建内联函数,例如
inline\u FOO{a1,a2}a1+a2
声明函数,调用
\u FOO{2,3}
应该返回2+3。我使用一个转换器类来完成所有的解析和计算。 我在同一个包中创建了一个名为InlineFunction的类,该类保存了程序默认函数的实现,这些函数都可以正常工作,但在尝试调用内联函数时,我遇到了一个错误。 调试时,我注意到,当程序运行正常,直到我实际声明一个新的内联函数时,
InlineFunction Function=newinlinefunction()我立即得到一个ClassNotFoundException。我不明白为什么,因为该函数与另一个正在工作的函数在同一个包中,我将整个包导入Converter类

编辑:InlineFunction的代码:

package oop.ex2.functions;

import java.util.LinkedHashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import oop.ex2.main.UndeclaredVariableException;

public class InlineFunction implements Calculable {
    //Regular expression for finding a variable name.
    private static final String VARIABLE_NAME_REGEX = "@[a-z0-9]+";
    //Pattern for finding a variable name.
    private static final Pattern VARIABLE_NAME = Pattern.compile(VARIABLE_NAME_REGEX);
    private LinkedHashMap<String, Double> _parameters;
    private String _code;

    public InlineFunction(String code, String[] parameters) {
        _parameters = new LinkedHashMap<String, Double>();
        _code = code;
        for (String name: parameters) {
            _parameters.put(name, 0d);
        }
    }

    @Override
    public String calculate(Double[] parameters) {
        if (parameters.length != _parameters.size()) {
            throw new IllegalParameterNumberException();
        }
        int parameterIndex = 0;
        for (String key: _parameters.keySet()){
            _parameters.put(key, parameters[parameterIndex]);
        }
        _code = replaceParameters(_code);
        return _code;
    }

    private String replaceParameters(String expression) {
        Matcher variableName = VARIABLE_NAME.matcher(expression);
        while (variableName.find()) {
            if (_parameters.containsKey(variableName.group())) {
                expression = variableName.replaceFirst(_parameters.get(variableName.group()).toString());
                //Reset the matcher, since the expression was changed
                variableName = VARIABLE_NAME.matcher(expression);
            } else {
                throw new UndeclaredVariableException();
            }
        }
        return expression;
    }
}
包oop.ex2.functions;
导入java.util.LinkedHashMap;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
导入oop.ex2.main.UndeclaredVariableException;
公共类InlineFunction实现可计算{
//用于查找变量名的正则表达式。
私有静态最终字符串变量_NAME_REGEX=“@[a-z0-9]+”;
//用于查找变量名的模式。
私有静态最终模式变量\u NAME=Pattern.compile(变量\u NAME\u REGEX);
私有LinkedHashMap_参数;
私有字符串_码;
公共InlineFunction(字符串代码,字符串[]参数){
_参数=新LinkedHashMap();
_代码=代码;
用于(字符串名称:参数){
_参数.put(名称,0d);
}
}
@凌驾
公共字符串计算(双[]参数){
if(parameters.length!=\u parameters.size()){
抛出新的IllegalParameterNumber异常();
}
int参数索引=0;
对于(字符串键:_parameters.keySet()){
_parameters.put(key,parameters[parameterIndex]);
}
_代码=替换参数(_代码);
返回代码;
}
私有字符串替换参数(字符串表达式){
Matcher variableName=变量\名称.Matcher(表达式);
while(variableName.find()){
if(_parameters.containsKey(variableName.group())){
expression=variableName.replaceFirst(_parameters.get(variableName.group()).toString());
//重置匹配器,因为表达式已更改
variableName=VARIABLE\u NAME.matcher(表达式);
}否则{
抛出新的未声明的VariableException();
}
}
返回表达式;
}
}

该问题是由于没有正确处理提供给构造函数的输入造成的,并且已得到修复。

您可以发布您对InlineFunction的定义吗?您的代码为什么无法编译?是否检查了输出文件夹?没有输出文件夹,输出直接到控制台,但bin文件夹中有一个InlineFunction.class文件,因此代码编译您是在处理Eclipse应用程序还是纯Java应用程序?如何启动应用程序?问题是由于没有正确处理提供给构造函数的输入,并且已经修复。谢谢你的帮助。