当导入包时,im得到的错误是:包javax.annotation不可访问。编译时的错误,因为我不能使用代码中生成的向下是:错误发生在启动层初始化期间
java.lang.module.FindException:无法派生C:\Users"NAME".p2\pool\plugins\es.ucm.gaia.colibristudio.LibraryPool_1.0.0\lib\databaseconnector\jboss-transaction-api_1.1_spec-1.0.0.Final.jar的模块描述符,原因: java.lang.IllegalArgumentException: jboss.transaction.api.1.1.spec:无效的模块名称:'1‘不是Java标识符
代码是:
import jcolibri.cbraplications.StandardCBRApplication;
import jcolibri.cbrcore.CBRCase;
import jcolibri.cbrcore.CBRCaseBase;
import jcolibri.cbrcore.CBRQuery;
import jcolibri.cbrcore.Connector;
import jcolibri.exception.ExecutionException;
import jcolibri.exception.InitializingException;
import jcolibri.method.retrieve.NNretrieval.NNConfig;
import javax.annotation.Generated; //This is where im getting the error and
//every Generated after does not work
import representation.CaseDescription;
import representation.CaseSolution;
import jcolibri.method.retrieve.NNretrieval.NNConfig;
import jcolibri.cbrcore.Attribute;
import jcolibri.method.retrieve.RetrievalResult;
import jcolibri.method.retrieve.NNretrieval.NNScoringMethod;
import jcolibri.method.retrieve.selection.SelectCases;
import java.util.Collection;
public class CBRApplication implements StandardCBRApplication {
@Generated(value = { "ColibriStudio" })
Connector connector;
@Generated(value = { "ColibriStudio" })
CBRCaseBase casebase;
//******************************************************************/
// Configuration
//******************************************************************/
@Override
public void configure() throws ExecutionException {
try{
configureConnector();
configureCaseBase();
} catch (Exception e){
throw new ExecutionException(e);
}
}
/** Configures the connector */
@Generated(value = { "CS-PTConector" })
private void configureConnector() throws InitializingException{
connector = new jcolibri.connector.PlainTextConnector();
connector.initFromXMLfile(jcolibri.util.FileIO.findFile("config/plainTextConnectorConfig.xml"));
}
/** Configures the case base */
@Generated(value = { "CS-CaseManager" })
private void configureCaseBase() throws InitializingException{
casebase = new jcolibri.casebase.LinearCaseBase();
}
//******************************************************************/
// Similarity
//******************************************************************/
/** Configures the similarity */
@Generated(value = { "CS-Similarity" })
private NNConfig getSimilarityConfig() {
NNConfig simConfig = new NNConfig();
simConfig.setDescriptionSimFunction(new jcolibri.method.retrieve.NNretrieval.similarity.global.Average());
Attribute attribute0 = new Attribute("HolidayType", CaseDescription.class);
simConfig.addMapping(attribute0, new jcolibri.method.retrieve.NNretrieval.similarity.local.Equal());
simConfig.setWeight(attribute0, 1.00);
Attribute attribute1 = new Attribute("NumberOfPersons", CaseDescription.class);
simConfig.addMapping(attribute1, new jcolibri.method.retrieve.NNretrieval.similarity.local.Equal());
simConfig.setWeight(attribute1, 1.00);
Attribute attribute2 = new Attribute("Region", CaseDescription.class);
simConfig.addMapping(attribute2, new jcolibri.method.retrieve.NNretrieval.similarity.local.Equal());
simConfig.setWeight(attribute2, 1.00);
Attribute attribute3 = new Attribute("Transportation", CaseDescription.class);
simConfig.addMapping(attribute3, new jcolibri.method.retrieve.NNretrieval.similarity.local.Equal());
simConfig.setWeight(attribute3, 1.00);
Attribute attribute4 = new Attribute("Duration", CaseDescription.class);
simConfig.addMapping(attribute4, new jcolibri.method.retrieve.NNretrieval.similarity.local.Equal());
simConfig.setWeight(attribute4, 1.00);
Attribute attribute5 = new Attribute("Season", CaseDescription.class);
simConfig.addMapping(attribute5, new jcolibri.method.retrieve.NNretrieval.similarity.local.Equal());
simConfig.setWeight(attribute5, 1.00);
Attribute attribute6 = new Attribute("Accommodation", CaseDescription.class);
simConfig.addMapping(attribute6, new jcolibri.method.retrieve.NNretrieval.similarity.local.Equal());
simConfig.setWeight(attribute6, 1.00);
return simConfig;
}
//******************************************************************/
// Methods
//******************************************************************/
@Generated(value = { "ColibriStudio" })
@Override
public CBRCaseBase preCycle() throws ExecutionException {
casebase.init(connector);
return casebase;
}
@Generated(value = { "ColibriStudio" })
@Override
public void cycle(CBRQuery query) throws ExecutionException {
NNConfig simConfig = getSimilarityConfig();
Collection<RetrievalResult> eval = NNScoringMethod.evaluateSimilarity(casebase.getCases(), query, simConfig);
eval = SelectCases.selectTopKRR(eval, 5);
System.out.println("Retrieved cases:");
for (RetrievalResult nse : eval)
System.out.println(nse);
}
@Generated(value = { "ColibriStudio" })
@Override
public void postCycle() throws ExecutionException {
connector.close();
}
/**
* Main method
*/
@Generated(value = { "ColibriStudio" })
public static void main(String[] args) {
CBRApplication cbrApp = new CBRApplication();
try {
cbrApp.configure();
CBRCaseBase caseBase = cbrApp.preCycle();
for(CBRCase c: caseBase.getCases())
System.out.println(c);
} catch (ExecutionException e) {
e.printStackTrace();
}
}
}发布于 2020-07-06 02:06:54
如果Eclipse说“JDK”是不可访问的,那么可能是因为使用了什么javax.annotation来编译您的代码。您希望您的代码需要JDK 1.8编译器吗?
首先要检查的是与您的项目关联的Java Execution Environment名称。如果您需要JDK 1.8,那么在Project Properties and Java Compiler中,它应该引用"JavaSE-1.8“作为执行环境。
您还应该检查执行环境本身的定义。这可以在Eclipse Preferences->Java->InstalledJREs->ExecutionEnvironments中找到。如果单击"JavaSE-1.8",列表中应该有一个或多个Java发行版,其中一个应该选中,选中的那个发行版的名称应该是"jdk“,而不是"jre”。
https://stackoverflow.com/questions/62743184
复制相似问题