我已经读过你需要实体类的 kotlin-maven-noarg 编译器插件,以便它生成default-parameter less cosntructor。
但是应用程序不会以下列错误开头:
没有实体的默认构造函数
你能告诉我我做错了什么吗?
的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
{...}
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testSourceDirectory>src/test/java</testSourceDirectory>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<configuration>
<compilerPlugins>
<plugin>jpa</plugin>
</compilerPlugins>
<pluginOptions>
<option>jpa:annotation=javax.persistence.Entity</option>
</pluginOptions>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-noarg</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<properties>
{...}
<junit.version>4.12</junit.version>
<kotlin.version>1.1.0</kotlin.version>
</properties>
{...}
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</project>
测试类:
@RunWith(SpringJUnit4ClassRunner::class)
@ContextConfiguration(classes = arrayOf(VedicaConfig::class))
class InitStructures {
private var vedicaDBInit: VedicaDBInit? = null
@Before
fun init() {
vedicaDBInit = VedicaDBInit()
}
@Test
fun initClientFolders() {
}
}
我正在使用Intellij IDEA和Kotlin 1.1.0,所以对于部署我只需单击调试/运行并选择Tomcat运行配置并运行测试我只需右键单击测试类,然后单击运行/调试。
答案 0 :(得分:2)
在运行测试之前,您是否尝试过运行Maven compile
目标?我发现Intellij的Kotlin run / test默认配置不会触发Maven插件,因此不应用no-arg插件。
尝试运行compile
目标,然后再次运行测试。
答案 1 :(得分:1)
我遇到了同样的问题。我正在使用gradle build btw。
对我有用的是,我没有运行intellij提供的默认运行配置,而是创建了一个类型为gradle的新运行配置
在Gradle project
选择我的项目和
在Tasks
已选中bootRun
然后运行我的项目,它对我有用
答案 2 :(得分:1)
这是一个Intellij错误,已在以下版本中修复:
答案 3 :(得分:0)
我和intellij / gradle / kotlin有类似的问题。
在我的情况下,我总是通过intellij编辑器Run-Icon调用main方法来启动web应用程序。我不知道出了什么问题,但是不知怎的,构建过程没有正确完成。
相比之下,如果我通过调用./gradlew bootRun
从控制台启动web应用程序,一切正常!
答案 4 :(得分:0)
最后经过几次尝试找到解决方法:
在“程序参数”字段中添加以下预设:
-Xplugin=$KOTLIN_HOME/lib/noarg-compiler-plugin.jar -P plugin:org.jetbrains.kotlin.noarg:preset=jpa
答案 5 :(得分:0)
在遇到@LynAs的评论之前,我遇到了同样的错误;然后我记得IntelliJ中有一个设置可以确定如何构建和运行项目。它位于Settings -> Build, Execution, Deployment -> Gradle -> Build and run using
下。选择Gradle (Default)
,因为如果选择IntelliJ IDEA
,则您的构建可能无法正常运行。该行上方显示一条消息:
在纯Java / Kotlin项目中,借助优化,借助IDE进行构建和运行可能会更快。 请注意,IDE不支持所有Gradle插件,并且可能无法使用其中的某些插件正确构建项目。
因此,最好使用Gradle构建工具而不是IntelliJ的构建工具。