我的编译环境是jdk1.8,运行时环境是jdk1.6.java
gradle插件有sourceCompatibility
属性.它对java项目有效.
例如:当sourceCompatibility=1.6
我使用api 时编译器将报告错误,例如Paths
来自jdk1.7 的api .
但sourceCompatibility
属性不适用于kotlin项目.我知道它超出了java
插件的范围.但是我很奇怪kotlin
gradle的插件是否有类似的属性.(jvmTarget
属性默认为1.6,它不会阻止我使用jdk1.7 api)
===我的代码===
kotlin代码:
fun main(args: Array<String>) {
val pp = Paths.get("/tmp")
... ...
}
Run Code Online (Sandbox Code Playgroud)
我希望kotlin的编译器报告错误,但编译成功,
父母build.gradle
:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.0"
}
}
subprojects {
apply plugin: "java"
compileJava.sourceCompatibility=1.6
compileJava.targetCompatibility=1.6
compileJava.options.encoding = 'UTF-8'
// For ubuntu
compileJava.options.bootClasspath = '/usr/lib/jvm/java-6-oracle/jre/lib/rt.jar'
}
Run Code Online (Sandbox Code Playgroud)
儿童kotlin项目build.gradle
:
apply plugin: 'application'
apply plugin: 'kotlin'
mainClassName = …
Run Code Online (Sandbox Code Playgroud) 我的系统是 ubuntu 12.04。我从 修改了示例man 2 signalfd
,并添加了示例sigaddset(&mask, SIGSEGV)
。但是在SIGSEGV
生成时我无法获得输出。
它是一个错误glibc
吗?源代码片段如下:
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
sigaddset(&mask, SIGQUIT);
sigaddset(&mask, SIGSEGV);
/* Block signals so that they aren't handled
according to their default dispositions */
if (sigprocmask(SIG_BLOCK, &mask, NULL) == -1)
handle_error("sigprocmask");
sfd = signalfd(-1, &mask, 0);
if (sfd == -1)
handle_error("signalfd");
int* a = NULL;
for (;;) {
s = read(sfd, &fdsi, sizeof(struct signalfd_siginfo));
if (s != sizeof(struct signalfd_siginfo))
handle_error("read");
if (fdsi.ssi_signo == SIGINT) {
printf("Got SIGINT\n"); …
Run Code Online (Sandbox Code Playgroud)