我试图写一个插件添加模拟数据到一个Kotlin项目。第一部分涉及查找当前项目中继承自特定基类的所有Kotlin类。我希望能够解析这些类,读取注释的值,并获得构造函数的结构。然后,该信息将用于向项目添加代码,将选定类的实例添加到模拟数据库实例中。
java.lang.ClassCastException: class org.jetbrains.kotlin.psi.KtFile cannot be cast to class org.jetbrains.kotlin.psi.KtFile (org.jetbrains.kotlin.psi.KtFile is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @2ed18f3d; org.jetbrains.kotlin.psi.KtFile is in unnamed module of loader com.intellij.ide.plugins.cl.PluginClassLoader @4308c14c)
plugins {
id 'java'
id 'org.jetbrains.intellij' version '0.4.11'
id 'org.jetbrains.kotlin.jvm' version '1.3.31'
}
group 'se.winassist'
version '1.0'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.jetbrains.kotlin:kotlin-compiler-embeddable:1.3.31"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
// See https://github.com/JetBrains/gradle-intellij-plugin/
intellij {
version '2019.2.3'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
patchPluginXml {
changeNotes """
Add change notes here.<br>
<em>most HTML tags may be used</em>"""
}
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.ui.Messages
import org.jetbrains.kotlin.psi.KtFile
class CreateMockdataFromPostgreSQLClass: AnAction() {
override fun actionPerformed(e: AnActionEvent) {
val project = e.getRequiredData(CommonDataKeys.PROJECT)
val kotlinFileHandler = KotlinFileHandler(project)
val dbClasses = kotlinFileHandler.getAllKotlinDbClasses()
val classNames = dbClasses.map {
val ktFile = it as KtFile
ktFile.name
}.joinToString(separator = "\n")
Messages.showInfoMessage(classNames, "Test")
}
}
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.psi.PsiDirectory
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiManager
data class KotlinFileHandler(val aProject: Project) {
fun getAllKotlinDbClasses(): List<PsiFile> {
val roots = ProjectRootManager.getInstance(aProject).contentSourceRoots
val dirs = roots.map { PsiManager.getInstance(aProject).findDirectory(it) }
val result = mutableListOf<PsiFile>()
getKotlinDbClassesInPsiDir(result, dirs)
return result.toList()
}
private tailrec fun getKotlinDbClassesInPsiDir(aResult: MutableList<PsiFile>, aPsiDirectoryList: List<PsiDirectory?>) {
if (aPsiDirectoryList.isEmpty()) return
val subDirectories = mutableListOf<PsiDirectory>()
aPsiDirectoryList.filter { it != null }.forEach {
val children = it!!.children
val files = children.filter {
it is PsiFile && it.language.toString().toLowerCase() == "language: kotlin"
}.map { it as PsiFile }
subDirectories += children.filter { it is PsiDirectory }.map { it as PsiDirectory }
aResult += files.filter {
hasBasePersistenceSuperclass(it) && hasTableNameAnnotation(it)
}.toList()
}
getKotlinDbClassesInPsiDir(aResult, subDirectories)
}
}
我想我把gradle设置错了。我已经寻找了一个适当的设置广泛,但未能找到一个工作的解决方案。有人能指导我正确的分级设置吗?
您是否通过向IntelliJ任务添加插件进行了检查
intellij {
version '2020.1'
plugins = ['java','Kotlin']
intellij.type = 'IC'
}
请检查并更新
问题内容: 大家好。我正在为一个学校项目工作,在该项目中,我们获得了.class文件,但没有提供包含在我们代码中的源代码。我正在使用Eclipse,并且希望将文件包含在我的项目中,以便可以从中实例化对象并使用它。 该文件是TokenizerImpl.class,我想这样使用它: 我将文件放在项目文件夹中,Eclipse表示“ TokenizeImpl无法解析为类型”,我认为这意味着它找不到类或源。
编写 junit 测试时: 我的代码编辑器(IntelliJ)显示警告 只有非静态嵌套类可以用作@嵌套测试类。 如何在 kotlin 的 junit 测试中编写嵌套类?
问题内容: 在Express项目中包括CSS和JS文件的正确方法是什么? 我正在使用ejs模板引擎。我已经看到一个使用connect-assetmanager的示例,但是很难遵循。 一个小的示例项目在index.ejs(不是layout.ejs)中包含css和js会非常有用。 问题答案: 静态文件可以与express的静态中间件一起使用。我通常为从根目录提供所有静态文件的目录。 如果已使用npm(
我的项目由多个模块组成。每个模块都可以独立运行,并有单独的log4j2.xml 假设项目X由三个模块组成: 模块A具有log4j2。xml(包含记录器和附加器) 模块B具有log4j2。xml 模块C具有log4j2。xml 在集成模块时,我必须手动将每个模块的log4j2.xml中的记录仪和应用程序复制粘贴到项目特定的log4j2.xml文件中。 为了避免复制粘贴,我希望XInclude包含多个
我们正在尝试使用java webstart开发一个打印应用程序。我们使用eclipse将jar创建为普通jar文件。我们的应用程序需要外部库来连接数据库、将数据转换为字节等。 我们以前可以通过将必要的JAR放入jre文件夹的/ext/目录来实现这一点。然而,这导致了与tomcat服务器的库冲突,所以我们希望避免这种方法。 我们还尝试将项目导出为可运行的jar,因为所需的库也已打包在jar中。但是当