Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_langtools
提交
4a3c9e25
D
dragonwell8_langtools
项目概览
openanolis
/
dragonwell8_langtools
通知
0
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_langtools
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
4a3c9e25
编写于
9月 08, 2009
作者:
J
jjg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6879371: javap does not close internal default file manager
Reviewed-by: darcy
上级
3d30e20d
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
136 addition
and
3 deletion
+136
-3
src/share/classes/com/sun/tools/javap/JavapTask.java
src/share/classes/com/sun/tools/javap/JavapTask.java
+17
-3
test/tools/javap/T6879371.java
test/tools/javap/T6879371.java
+119
-0
未找到文件。
src/share/classes/com/sun/tools/javap/JavapTask.java
浏览文件 @
4a3c9e25
...
...
@@ -455,8 +455,19 @@ public class JavapTask implements DisassemblerTool.DisassemblerTask, Messages {
return
EXIT_CMDERR
;
}
boolean
ok
=
run
();
return
ok
?
EXIT_OK
:
EXIT_ERROR
;
try
{
boolean
ok
=
run
();
return
ok
?
EXIT_OK
:
EXIT_ERROR
;
}
finally
{
if
(
defaultFileManager
!=
null
)
{
try
{
defaultFileManager
.
close
();
defaultFileManager
=
null
;
}
catch
(
IOException
e
)
{
throw
new
InternalError
(
e
);
}
}
}
}
catch
(
BadArgs
e
)
{
reportError
(
e
.
key
,
e
.
args
);
if
(
e
.
showUsage
)
{
...
...
@@ -856,7 +867,9 @@ public class JavapTask implements DisassemblerTool.DisassemblerTask, Messages {
}
private
JavaFileManager
getDefaultFileManager
(
final
DiagnosticListener
<?
super
JavaFileObject
>
dl
,
PrintWriter
log
)
{
return
JavapFileManager
.
create
(
dl
,
log
);
if
(
defaultFileManager
==
null
)
defaultFileManager
=
JavapFileManager
.
create
(
dl
,
log
);
return
defaultFileManager
;
}
private
JavaFileObject
getClassFileObject
(
String
className
)
throws
IOException
{
...
...
@@ -1004,6 +1017,7 @@ public class JavapTask implements DisassemblerTool.DisassemblerTask, Messages {
protected
Context
context
;
JavaFileManager
fileManager
;
JavaFileManager
defaultFileManager
;
PrintWriter
log
;
DiagnosticListener
<?
super
JavaFileObject
>
diagnosticListener
;
List
<
String
>
classes
;
...
...
test/tools/javap/T6879371.java
0 → 100644
浏览文件 @
4a3c9e25
/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/*
* @test
* @bug 6879371
* @summary javap does not close internal default file manager
*/
import
java.io.*
;
import
java.util.zip.*
;
public
class
T6879371
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
new
T6879371
().
run
();
}
public
void
run
()
throws
Exception
{
// create a simple test class which we can put into
// a test zip file and know that it will be used by
// javap.
File
classDir
=
new
File
(
"classes"
);
classDir
.
mkdir
();
String
className
=
"Test"
;
File
javaFile
=
writeTestFile
(
className
);
compileTestFile
(
classDir
,
javaFile
);
test
(
classDir
,
className
,
false
);
test
(
classDir
,
className
,
true
);
}
void
test
(
File
classDir
,
String
className
,
boolean
useJavaUtilZip
)
throws
Exception
{
// javac should really not be using system properties like this
// -- it should really be using (hidden) options -- but until then
// take care to leave system properties as we find them, so as not
// to adversely affect other tests that might follow.
String
prev
=
System
.
getProperty
(
"useJavaUtilZip"
);
setProperty
(
"useJavaUtilZip"
,
(
useJavaUtilZip
?
"true"
:
null
));
try
{
File
zipFile
=
zip
(
classDir
,
new
File
(
classDir
+
".zip"
));
javap
(
"-classpath"
,
zipFile
.
getPath
(),
className
);
if
(!
zipFile
.
delete
())
throw
new
Exception
(
"failed to delete "
+
zipFile
);
}
finally
{
setProperty
(
"useJavaUtilZip"
,
prev
);
}
}
File
writeTestFile
(
String
name
)
throws
IOException
{
File
f
=
new
File
(
name
+
".java"
);
PrintWriter
out
=
new
PrintWriter
(
new
BufferedWriter
(
new
FileWriter
(
f
)));
out
.
println
(
"class "
+
name
+
" { }"
);
out
.
close
();
return
f
;
}
void
compileTestFile
(
File
classDir
,
File
file
)
{
int
rc
=
com
.
sun
.
tools
.
javac
.
Main
.
compile
(
new
String
[]
{
"-d"
,
classDir
.
getPath
(),
file
.
getPath
()
});
if
(
rc
!=
0
)
throw
new
Error
(
"compilation failed. rc="
+
rc
);
}
File
zip
(
File
dir
,
File
zipFile
)
throws
IOException
{
ZipOutputStream
zipOut
=
new
ZipOutputStream
(
new
FileOutputStream
(
zipFile
));
for
(
File
file:
dir
.
listFiles
())
{
if
(
file
.
isFile
())
{
byte
[]
data
=
new
byte
[(
int
)
file
.
length
()];
DataInputStream
in
=
new
DataInputStream
(
new
FileInputStream
(
file
));
in
.
readFully
(
data
);
in
.
close
();
zipOut
.
putNextEntry
(
new
ZipEntry
(
file
.
getName
()));
zipOut
.
write
(
data
,
0
,
data
.
length
);
zipOut
.
closeEntry
();
}
}
zipOut
.
close
();
return
zipFile
;
}
String
javap
(
String
...
args
)
{
StringWriter
sw
=
new
StringWriter
();
PrintWriter
out
=
new
PrintWriter
(
sw
);
int
rc
=
com
.
sun
.
tools
.
javap
.
Main
.
run
(
args
,
out
);
if
(
rc
!=
0
)
throw
new
Error
(
"javap failed. rc="
+
rc
);
out
.
close
();
return
sw
.
toString
();
}
void
setProperty
(
String
key
,
String
value
)
{
if
(
value
!=
null
)
System
.
setProperty
(
key
,
value
);
else
System
.
getProperties
().
remove
(
key
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录