У меня есть следующий код
IJavaProject targetProject = null;
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
for (IProject project : root.getProjects()) {
if (project.getName().equals(projName)) {
try {
if (project.hasNature("org.eclipse.jdt.core.javanature")) {
targetProject = (IJavaProject) project;
}
} catch( ... ) {
// etc ...
}
По сути, я пытаюсь вернуть проект, который соответствует определенному имени в качестве IJavaProject.Как вы можете видеть, я проверяю, что рассматриваемый проект имеет Java-характер, вызывая:
if (project.hasNature("org.eclipse.jdt.core.javanature")) {
Увы, я получаю «ClassCaseException» с указанием
java.lang.ClassCastException:
org.eclipse.core.internal.resources.Project cannot be cast to org.eclipse.jdt.core.IJavaProject
Любая идеяЗачем?Я бы подумал, что как только IProject имеет Java-природу, он может быть преобразован в IJavaProject.Я не могу получить доступ к JDT Core API в данный момент, так как сервис недоступен здесь .