我发现这个关于Android的类似的问题,但我使用普通的Java与Maven作为构建工具.我认为最好发一个新问题.
我创建了一个Kotlin类,我试图从Java类中引用它MyKotlinClass.class.Maven构建失败,而IntelliJ Idea中的编译工作正常.我已经为maven添加了Kotlin插件:
<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>
Run Code Online (Sandbox Code Playgroud)
但是这没有帮助:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project app: Compilation failure
[ERROR] MyClassLinkingKotlin.java:[100,40] error: cannot find symbol
Run Code Online (Sandbox Code Playgroud)
线/列恰好指代符号MyKotlinClass.class.即使使用这样的话它也会失败:
System.err.println(MyKotlinClass.class)
Run Code Online (Sandbox Code Playgroud) 我在相应的资源文件夹中创建了一个新的布局文件.同步后,当我尝试引用布局文件,即R.layout.activity_test时,R是一个"未解析的符号".当我尝试在AS中构建时,它失败了.
有趣的是,如果我手动导入R文件并在代码中使用它,当我尝试在命令行上构建时,它可以工作.另一件事是当我尝试使用Java文件中的R访问布局文件时,这也有效.所以我知道R.java正在生成.
我尝试创建一个全新的项目,R可以在Kotlin文件中访问.
这里有什么问题?
我尝试过的事情:
清理然后建成
无效的缓存/重新启动
吹掉.gradle文件夹并重新创建索引
其他信息:
AS v3.0.1
试过Kotlin v1.1.2-4和v1.1.60
Gradle v4.2.1
Gradle Plugin v3.0.0