Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
硅谷海盗
kotlin
提交
91412b0e
K
kotlin
项目概览
硅谷海盗
/
kotlin
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kotlin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
91412b0e
编写于
5月 12, 2017
作者:
B
baratynskiy
提交者:
Mikhail Glukhikh
5月 17, 2017
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add tools.jar for JPS plugin
上级
71ba8e3a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
45 addition
and
8 deletion
+45
-8
compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/JavacWrapper.kt
...ac-wrapper/src/org/jetbrains/kotlin/javac/JavacWrapper.kt
+1
-1
jps-plugin/src/org/jetbrains/kotlin/compilerRunner/CompilerRunnerUtil.java
...g/jetbrains/kotlin/compilerRunner/CompilerRunnerUtil.java
+42
-6
jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt
...etbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt
+2
-1
未找到文件。
compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/JavacWrapper.kt
浏览文件 @
91412b0e
...
...
@@ -324,7 +324,7 @@ class JavacWrapper(javaFiles: Collection<File>,
}
}
return
symbol
?
.
let
{
SymbolBasedClass
(
it
,
this
@JavacWrapper
,
it
.
classfile
)
}
return
symbol
.
let
{
SymbolBasedClass
(
it
,
this
@JavacWrapper
,
it
.
classfile
)
}
}
}
\ No newline at end of file
jps-plugin/src/org/jetbrains/kotlin/compilerRunner/CompilerRunnerUtil.java
浏览文件 @
91412b0e
...
...
@@ -28,28 +28,30 @@ import java.io.IOException;
import
java.io.PrintStream
;
import
java.lang.ref.SoftReference
;
import
java.lang.reflect.Method
;
import
java.util.Collections
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
static
org
.
jetbrains
.
kotlin
.
cli
.
common
.
messages
.
CompilerMessageSeverity
.
ERROR
;
public
class
CompilerRunnerUtil
{
private
static
SoftReference
<
ClassLoader
>
ourClassLoaderRef
=
new
SoftReference
<
ClassLoader
>(
null
);
private
static
SoftReference
<
ClassLoader
>
ourClassLoaderRef
=
new
SoftReference
<>(
null
);
@NotNull
private
static
synchronized
ClassLoader
getOrCreateClassLoader
(
@NotNull
JpsCompilerEnvironment
environment
,
@NotNull
File
libPath
@NotNull
List
<
File
>
paths
)
throws
IOException
{
ClassLoader
classLoader
=
ourClassLoaderRef
.
get
();
if
(
classLoader
==
null
)
{
classLoader
=
ClassPreloadingUtils
.
preloadClasses
(
Collections
.
singletonList
(
new
File
(
libPath
,
"kotlin-compiler.jar"
))
,
paths
,
Preloader
.
DEFAULT_CLASS_NUMBER_ESTIMATE
,
CompilerRunnerUtil
.
class
.
getClassLoader
(),
environment
.
getClassesToLoadByParent
()
);
ourClassLoaderRef
=
new
SoftReference
<
ClassLoader
>(
classLoader
);
ourClassLoaderRef
=
new
SoftReference
<>(
classLoader
);
}
return
classLoader
;
}
...
...
@@ -78,7 +80,17 @@ public class CompilerRunnerUtil {
File
libPath
=
getLibPath
(
environment
.
getKotlinPaths
(),
environment
.
getMessageCollector
());
if
(
libPath
==
null
)
return
null
;
ClassLoader
classLoader
=
getOrCreateClassLoader
(
environment
,
libPath
);
List
<
File
>
paths
=
new
ArrayList
<>();
paths
.
add
(
new
File
(
libPath
,
"kotlin-compiler.jar"
));
if
(
Arrays
.
asList
(
arguments
).
contains
(
"-Xuse-javac"
))
{
File
toolsJar
=
getJdkToolsJar
();
if
(
toolsJar
!=
null
)
{
paths
.
add
(
toolsJar
);
}
}
ClassLoader
classLoader
=
getOrCreateClassLoader
(
environment
,
paths
);
Class
<?>
kompiler
=
Class
.
forName
(
compilerClassName
,
true
,
classLoader
);
Method
exec
=
kompiler
.
getMethod
(
...
...
@@ -90,4 +102,28 @@ public class CompilerRunnerUtil {
return
exec
.
invoke
(
kompiler
.
newInstance
(),
out
,
environment
.
getServices
(),
arguments
);
}
@Nullable
static
File
getJdkToolsJar
()
throws
IOException
{
String
javaHomePath
=
System
.
getProperty
(
"java.home"
);
if
(
javaHomePath
==
null
||
javaHomePath
.
isEmpty
())
{
return
null
;
}
File
javaHome
=
new
File
(
javaHomePath
);
File
toolsJar
=
new
File
(
javaHome
,
"lib/tools.jar"
);
if
(
toolsJar
.
exists
())
{
return
toolsJar
.
getCanonicalFile
();
}
// We might be inside jre.
if
(
javaHome
.
getName
().
equals
(
"jre"
))
{
toolsJar
=
new
File
(
javaHome
.
getParent
(),
"lib/tools.jar"
);
if
(
toolsJar
.
exists
())
{
return
toolsJar
.
getCanonicalFile
();
}
}
return
null
;
}
}
jps-plugin/src/org/jetbrains/kotlin/compilerRunner/JpsKotlinCompilerRunner.kt
浏览文件 @
91412b0e
...
...
@@ -227,7 +227,8 @@ class JpsKotlinCompilerRunner : KotlinCompilerRunner<JpsCompilerEnvironment>() {
getOrCreateDaemonConnection
{
val
libPath
=
CompilerRunnerUtil
.
getLibPath
(
environment
.
kotlinPaths
,
environment
.
messageCollector
)
val
compilerPath
=
File
(
libPath
,
"kotlin-compiler.jar"
)
val
compilerId
=
CompilerId
.
makeCompilerId
(
compilerPath
)
val
toolsJarPath
=
CompilerRunnerUtil
.
getJdkToolsJar
()
val
compilerId
=
CompilerId
.
makeCompilerId
(
listOfNotNull
(
compilerPath
,
toolsJarPath
)
)
val
daemonOptions
=
configureDaemonOptions
()
val
clientFlagFile
=
KotlinCompilerClient
.
getOrCreateClientFlagFile
(
daemonOptions
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录