java - ClassNotFoundException JavaRecursiveElementVisitor
问题描述
大家好,我正在尝试在 intellij 中构建一个插件,但在运行时出现以下错误-
Caused by: java.lang.ClassNotFoundException: com.intellij.psi.JavaRecursiveElementVisitor PluginClassLoader[com.rahul.gqlformat, 1.0] com.intellij.ide.plugins.cl.PluginClassLoader@2a707a23
我在function
命名内部遇到异常-printSelectedFileName
这是完整的课程-
package com.rahul.gqlformat;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.psi.*;
import javax.swing.*;
public class GqlView {
private JTextArea textArea;
private JButton btn;
private JPanel panel;
private Project project;
public GqlView(Project project) {
this.project = project;
btn.addActionListener(actionEvent -> {
textArea.append("Hello");
// printSelectedFileName();
});
}
void printSelectedFileName() {
FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
VirtualFile[] virtualFile = fileEditorManager.getOpenFiles();
if (virtualFile != null && virtualFile.length > 0) {
VirtualFile vf = virtualFile[0];
PsiFile psiFile = PsiManager.getInstance(project).findFile(vf);
psiFile.accept(new JavaRecursiveElementVisitor() {
@Override
public void visitLocalVariable(PsiLocalVariable variable) {
super.visitLocalVariable(variable);
System.out.println("Found a variable at offset " + variable.getTextRange().getStartOffset());
}
});
}
}
public JPanel getPanel() {
return panel;
}
}
构建.gradle
plugins {
id 'java'
id 'org.jetbrains.intellij' version '0.4.21'
id 'org.jetbrains.kotlin.jvm' version '1.3.72'
}
group 'com.rahul.gqlformal'
version '1.0'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
intellij {
version = '2020.1'
plugins = ['java']
}
buildSearchableOptions {
enabled = false
}
patchPluginXml {
version = project.version
sinceBuild = '201'
untilBuild = '201.*'
}
解决方案
- 将新的依赖项编译组添加到 build.gradle
plugins {
id 'java'
id 'org.jetbrains.intellij' version '0.4.21'
}
group 'com.jb'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
compile group: 'com.github.adedayo.intellij.sdk', name: 'java-psi-api', version: '142.1'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
intellij {
version '2020.1.2'
}
patchPluginXml {
changeNotes """
Add change notes here.<br>
<em>most HTML tags may be used</em>"""
}
- 重新加载 IntelliJ IDEA
推荐阅读
- swift - Xcode 11 的 SWRevealViewController 问题
- java - 如何在约会类中创建列表以及如何编写测试用例?
- vba - 如何在 Excel 中使用 VBA 单击图标
- class - 导入弹窗不显示
- python - 在散点图中创建 for 循环的问题
- swift - 删除时动画表格视图单元格
- javascript - 使用 ngx-webcam 捕获图像并将其发送到人脸识别 api
- node.js - 电子邮件验证在 socialboard 4.0 中不起作用
- php - CakePHP 多用户角色/PRO 成员角色
- php - 链接共享时Wordpress发布预览问题