我和Gradle开始了一个多语言java/scala项目。java模块是使用JDK 1.6构建的遗留模块,因此我决定让我的构建环境使用旧的JDK。
这有一个非常实际的理由。代码如下:
class X{
private int i;
<T extends X> void aMethod(T t){
int it = t.i;
}
}
使用JDK 1.6可以很好地编译,但使用JDK 1.7会中断,并出现以下错误:
error: i has private access in X
出于这个原因(尽管很不幸),我决定坚持使用JDK 1.6(我们确实有这样的代码)。
现在我创建了一个全新的Gradle项目(之前没有使用依赖/构建工具),其中包含两个模块:
myApp
|---- common (java module)
|---- someService (depends on common)
| |---- service (scala module)
| |---- api (java client)
并将java源和目标兼容性设置为1.6。如果我使用gradle构建,一切都很好,即构建运行并且jars正确构建(java和scala),没有任何错误。
现在我使用“想法”插件生成了我的IntelliJ项目文件。IntelliJ正确加载项目。现在,当我尝试从IntelliJ(Ctrl F9)构建时,我得到以下信息:
Information: Modules "myApp", "someService", "common" were fully rebuilt due to project configuration/dependencies changes
Information: Compilation completed with 4 errors and 44 warnings in 2 sec
Information: 4 errors
Information: 44 warnings
Error: scala: warning: [options] bootstrap class path not set in conjunction with -source 1.6
Error: scala: 1 error
Error: scala: 43 warnings
Warning: scala: Some input files use unchecked or unsafe operations.
Warning: scala: Recompile with -Xlint:unchecked for details.
... (the warnings follow)
error: properties has private access in X
如您所见,我现在遇到JDK 1.7错误(尽管我是用1.6编译的),构建失败。IntelliJ说有4个错误,但我认为根本原因就是那一个。
现在,如果我去修复上面的代码,如下所示:
class X{
private int i;
<T extends X> void aMethod(T t){
// SDK 1.7: explicit downcast grants access to base private members
int it = ((X)t).i;
}
}
我得到以下错误:
scala: Error: org.jetbrains.jps.incremental.scala.remote.ServerException
java.lang.InternalError
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:838)
...
at java.lang.ClassLoader.getBootstrapResource(ClassLoader.java:1305)
...
at sbt.classfile.Analyze$$anonfun$apply$8$$anonfun$sbt$classfile$Analyze$$anonfun$$processDependency$1$1.apply$mcV$sp(Analyze.scala:49)
...
at scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:153)
...
at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:44)
at org.jetbrains.jps.incremental.scala.local.CompilerImpl.compile(CompilerImpl.scala:63)
...
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
at java.lang.reflect.Method.invoke(Method.java:606)
at com.martiansoftware.nailgun.NGSession.run(Unknown Source)
Caused by: java.io.FileNotFoundException: /usr/lib/jvm/java-7-oracle/jre/lib/resources.jar
...
我认为这是因为我卸载了JDK 1.7,安装了JDK 1.6,在IntelliJ路径的某个地方,仍然有一些东西指向旧的JDK。
所以我有两个问题:1。如何去掉IntelliJ中对JDK 1.7的任何引用?2.如何在不更改代码的情况下完全消除第一个错误?我知道这是可能的,因为Gradle做得很成功。
我真傻!我在没有重新启动IntelliJ的情况下卸载了JDK 7,所以它仍然指向一些JDK 7文件夹。这是一次非常奇怪的经历!
问题内容: 今天,我一直在尝试寻找一个合适的解决方案来建立一个既包含Java代码又包含Scala代码(它们之间具有双向依赖性)的maven项目。 我发现的解决方案通常包括在该阶段调用scala-maven-plugin或maven-scala- plugin,以便它在默认的maven编译器插件之前运行(示例:http : //www.hascode.com/2012/03 /片段混合- 斯卡拉的J
我试图编译一个MavenJava /Scala混合项目,它有一个Scala类,该类依赖于带有lombok注释的Javabean。我尝试将lombok jar文件添加到Scala编译器的引导类路径以及lombok代理中,但是编译器仍然无法找到生成的getters。Scala编译器是否有办法识别Lombok注释?如果没有,什么是好的解决方案? 请注意,我试图避免引入另一个maven项目,只是为了先编译
我有一个用Java编写的gradle项目,想把整个事情变成一个scala项目(仍然是gradle)。要做到这一点,需要采取哪些步骤? 我开始在scala中定义main方法,似乎Intellij不知道我要做什么。 到目前为止我所做的: > 在build.gradle中应用插件:“scala”--> 在build.gradle中编译'org.scala-lang:scala-library:2.10.
我无法在Intellij Ultimate中同步我的新Android Gradle项目。 在“工具”下
我有一个非常基本的java项目。 IntelliJ是否有类似的命令可以转换为Gradle?四处寻找,但似乎并不是这样。
我们是否需要分别安装hadoop和spark,在hadoop home上设置winutils并配置环境变量 我们创建maven项目,并在POM文件上编写所有依赖项。