Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
8e3b4641
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
8e3b4641
编写于
9月 29, 2008
作者:
T
tbell
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
966a0241
b4666ded
变更
75
隐藏空白更改
内联
并排
Showing
75 changed file
with
1021 addition
and
480 deletion
+1021
-480
src/share/bin/emessages.h
src/share/bin/emessages.h
+0
-5
src/share/bin/java.c
src/share/bin/java.c
+53
-165
src/share/bin/java.h
src/share/bin/java.h
+11
-0
src/share/classes/com/sun/jmx/mbeanserver/Introspector.java
src/share/classes/com/sun/jmx/mbeanserver/Introspector.java
+9
-1
src/share/classes/com/sun/jmx/mbeanserver/MXBeanSupport.java
src/share/classes/com/sun/jmx/mbeanserver/MXBeanSupport.java
+0
-1
src/share/classes/java/io/CharConversionException.java
src/share/classes/java/io/CharConversionException.java
+3
-1
src/share/classes/java/io/EOFException.java
src/share/classes/java/io/EOFException.java
+3
-1
src/share/classes/java/io/FileNotFoundException.java
src/share/classes/java/io/FileNotFoundException.java
+2
-1
src/share/classes/java/io/InterruptedIOException.java
src/share/classes/java/io/InterruptedIOException.java
+3
-1
src/share/classes/java/io/SyncFailedException.java
src/share/classes/java/io/SyncFailedException.java
+3
-1
src/share/classes/java/io/UTFDataFormatException.java
src/share/classes/java/io/UTFDataFormatException.java
+3
-1
src/share/classes/java/io/UnsupportedEncodingException.java
src/share/classes/java/io/UnsupportedEncodingException.java
+3
-1
src/share/classes/java/lang/AbstractMethodError.java
src/share/classes/java/lang/AbstractMethodError.java
+3
-1
src/share/classes/java/lang/ArithmeticException.java
src/share/classes/java/lang/ArithmeticException.java
+3
-1
src/share/classes/java/lang/ArrayIndexOutOfBoundsException.java
...are/classes/java/lang/ArrayIndexOutOfBoundsException.java
+3
-1
src/share/classes/java/lang/ArrayStoreException.java
src/share/classes/java/lang/ArrayStoreException.java
+3
-1
src/share/classes/java/lang/AssertionError.java
src/share/classes/java/lang/AssertionError.java
+3
-1
src/share/classes/java/lang/ClassCastException.java
src/share/classes/java/lang/ClassCastException.java
+3
-1
src/share/classes/java/lang/ClassCircularityError.java
src/share/classes/java/lang/ClassCircularityError.java
+3
-1
src/share/classes/java/lang/ClassFormatError.java
src/share/classes/java/lang/ClassFormatError.java
+3
-1
src/share/classes/java/lang/CloneNotSupportedException.java
src/share/classes/java/lang/CloneNotSupportedException.java
+3
-1
src/share/classes/java/lang/EnumConstantNotPresentException.java
...re/classes/java/lang/EnumConstantNotPresentException.java
+3
-1
src/share/classes/java/lang/IllegalAccessError.java
src/share/classes/java/lang/IllegalAccessError.java
+3
-1
src/share/classes/java/lang/IllegalAccessException.java
src/share/classes/java/lang/IllegalAccessException.java
+3
-1
src/share/classes/java/lang/IllegalMonitorStateException.java
...share/classes/java/lang/IllegalMonitorStateException.java
+3
-1
src/share/classes/java/lang/IllegalThreadStateException.java
src/share/classes/java/lang/IllegalThreadStateException.java
+3
-1
src/share/classes/java/lang/IncompatibleClassChangeError.java
...share/classes/java/lang/IncompatibleClassChangeError.java
+3
-1
src/share/classes/java/lang/IndexOutOfBoundsException.java
src/share/classes/java/lang/IndexOutOfBoundsException.java
+3
-1
src/share/classes/java/lang/InstantiationError.java
src/share/classes/java/lang/InstantiationError.java
+3
-1
src/share/classes/java/lang/InstantiationException.java
src/share/classes/java/lang/InstantiationException.java
+3
-1
src/share/classes/java/lang/InternalError.java
src/share/classes/java/lang/InternalError.java
+3
-1
src/share/classes/java/lang/InterruptedException.java
src/share/classes/java/lang/InterruptedException.java
+3
-1
src/share/classes/java/lang/LinkageError.java
src/share/classes/java/lang/LinkageError.java
+3
-1
src/share/classes/java/lang/NegativeArraySizeException.java
src/share/classes/java/lang/NegativeArraySizeException.java
+3
-1
src/share/classes/java/lang/NoClassDefFoundError.java
src/share/classes/java/lang/NoClassDefFoundError.java
+3
-1
src/share/classes/java/lang/NoSuchFieldError.java
src/share/classes/java/lang/NoSuchFieldError.java
+3
-1
src/share/classes/java/lang/NoSuchFieldException.java
src/share/classes/java/lang/NoSuchFieldException.java
+3
-1
src/share/classes/java/lang/NoSuchMethodError.java
src/share/classes/java/lang/NoSuchMethodError.java
+3
-1
src/share/classes/java/lang/NoSuchMethodException.java
src/share/classes/java/lang/NoSuchMethodException.java
+3
-1
src/share/classes/java/lang/NullPointerException.java
src/share/classes/java/lang/NullPointerException.java
+3
-1
src/share/classes/java/lang/OutOfMemoryError.java
src/share/classes/java/lang/OutOfMemoryError.java
+3
-1
src/share/classes/java/lang/StackOverflowError.java
src/share/classes/java/lang/StackOverflowError.java
+3
-1
src/share/classes/java/lang/StringIndexOutOfBoundsException.java
...re/classes/java/lang/StringIndexOutOfBoundsException.java
+3
-1
src/share/classes/java/lang/ThreadDeath.java
src/share/classes/java/lang/ThreadDeath.java
+4
-2
src/share/classes/java/lang/TypeNotPresentException.java
src/share/classes/java/lang/TypeNotPresentException.java
+3
-1
src/share/classes/java/lang/UnknownError.java
src/share/classes/java/lang/UnknownError.java
+3
-1
src/share/classes/java/lang/UnsatisfiedLinkError.java
src/share/classes/java/lang/UnsatisfiedLinkError.java
+3
-1
src/share/classes/java/lang/UnsupportedClassVersionError.java
...share/classes/java/lang/UnsupportedClassVersionError.java
+3
-1
src/share/classes/java/lang/VerifyError.java
src/share/classes/java/lang/VerifyError.java
+3
-1
src/share/classes/java/lang/annotation/AnnotationFormatError.java
...e/classes/java/lang/annotation/AnnotationFormatError.java
+3
-1
src/share/classes/java/lang/annotation/AnnotationTypeMismatchException.java
...java/lang/annotation/AnnotationTypeMismatchException.java
+3
-1
src/share/classes/java/lang/annotation/IncompleteAnnotationException.java
...s/java/lang/annotation/IncompleteAnnotationException.java
+3
-1
src/share/classes/java/lang/instrument/IllegalClassFormatException.java
...ses/java/lang/instrument/IllegalClassFormatException.java
+3
-1
src/share/classes/java/lang/instrument/UnmodifiableClassException.java
...sses/java/lang/instrument/UnmodifiableClassException.java
+3
-1
src/share/classes/java/lang/management/ManagementPermission.java
...re/classes/java/lang/management/ManagementPermission.java
+2
-1
src/share/classes/java/lang/reflect/GenericSignatureFormatError.java
...lasses/java/lang/reflect/GenericSignatureFormatError.java
+4
-2
src/share/classes/java/lang/reflect/MalformedParameterizedTypeException.java
...ava/lang/reflect/MalformedParameterizedTypeException.java
+4
-2
src/share/classes/java/util/ConcurrentModificationException.java
...re/classes/java/util/ConcurrentModificationException.java
+3
-1
src/share/classes/java/util/EmptyStackException.java
src/share/classes/java/util/EmptyStackException.java
+3
-1
src/share/classes/java/util/InputMismatchException.java
src/share/classes/java/util/InputMismatchException.java
+3
-1
src/share/classes/java/util/NoSuchElementException.java
src/share/classes/java/util/NoSuchElementException.java
+3
-1
src/share/classes/java/util/TooManyListenersException.java
src/share/classes/java/util/TooManyListenersException.java
+2
-1
src/share/classes/java/util/jar/JarException.java
src/share/classes/java/util/jar/JarException.java
+3
-1
src/share/classes/java/util/regex/PatternSyntaxException.java
...share/classes/java/util/regex/PatternSyntaxException.java
+2
-1
src/share/classes/java/util/zip/DataFormatException.java
src/share/classes/java/util/zip/DataFormatException.java
+3
-1
src/share/classes/java/util/zip/ZipException.java
src/share/classes/java/util/zip/ZipException.java
+3
-1
src/share/classes/javax/management/openmbean/MXBeanMappingFactory.java
...sses/javax/management/openmbean/MXBeanMappingFactory.java
+1
-1
src/share/classes/sun/launcher/LauncherHelper.java
src/share/classes/sun/launcher/LauncherHelper.java
+238
-0
src/share/classes/sun/launcher/resources/launcher.properties
src/share/classes/sun/launcher/resources/launcher.properties
+16
-1
src/solaris/bin/java_md.c
src/solaris/bin/java_md.c
+21
-0
src/windows/bin/java_md.c
src/windows/bin/java_md.c
+26
-1
test/javax/management/mxbean/CustomTypeTest.java
test/javax/management/mxbean/CustomTypeTest.java
+54
-2
test/tools/launcher/Arrrghs.java
test/tools/launcher/Arrrghs.java
+182
-63
test/tools/launcher/Arrrghs.sh
test/tools/launcher/Arrrghs.sh
+0
-176
test/tools/launcher/TestHelper.java
test/tools/launcher/TestHelper.java
+228
-0
未找到文件。
src/share/bin/emessages.h
浏览文件 @
8e3b4641
...
...
@@ -50,11 +50,6 @@
#define JAR_ERROR2 "Error: Unable to access jarfile %s"
#define JAR_ERROR3 "Error: Invalid or corrupt jarfile %s"
#define CLS_ERROR1 "Error: Could not find the main class %s.\n" JNI_ERROR
#define CLS_ERROR2 "Error: Failed to load Main Class: %s\n%s"
#define CLS_ERROR3 "Error: No main method found in specified class.\n" GEN_ERROR
#define CLS_ERROR4 "Error: Main method not public\n" GEN_ERROR
#define CFG_WARN1 "Warning: %s VM not supported; %s VM will be used"
#define CFG_WARN2 "Warning: No leading - on line %d of `%s'"
#define CFG_WARN3 "Warning: Missing VM type on line %d of `%s'"
...
...
src/share/bin/java.c
浏览文件 @
8e3b4641
...
...
@@ -102,8 +102,7 @@ static jboolean InitializeJVM(JavaVM **pvm, JNIEnv **penv,
InvocationFunctions
*
ifn
);
static
jstring
NewPlatformString
(
JNIEnv
*
env
,
char
*
s
);
static
jobjectArray
NewPlatformStringArray
(
JNIEnv
*
env
,
char
**
strv
,
int
strc
);
static
jclass
LoadClass
(
JNIEnv
*
env
,
char
*
name
);
static
jstring
GetMainClassName
(
JNIEnv
*
env
,
char
*
jarname
);
static
jclass
LoadMainClass
(
JNIEnv
*
env
,
jboolean
isJar
,
char
*
name
);
static
void
TranslateApplicationArgs
(
int
jargc
,
const
char
**
jargv
,
int
*
pargc
,
char
***
pargv
);
static
jboolean
AddApplicationOptions
(
int
cpathc
,
const
char
**
cpathv
);
...
...
@@ -301,6 +300,22 @@ JLI_Launch(int argc, char ** argv, /* main argc, argc */
}
#define CHECK_EXCEPTION_NULL_LEAVE(e) \
if ((*env)->ExceptionOccurred(env)) { \
JLI_ReportExceptionDescription(env); \
goto leave; \
} \
if ((e) == NULL) { \
JLI_ReportErrorMessage(JNI_ERROR); \
goto leave; \
}
#define CHECK_EXCEPTION_LEAVE(rv) \
if ((*env)->ExceptionOccurred(env)) { \
JLI_ReportExceptionDescription(env); \
ret = (rv); \
goto leave; \
}
int
JNICALL
JavaMain
(
void
*
_args
)
...
...
@@ -321,9 +336,7 @@ JavaMain(void * _args)
int
ret
=
0
;
jlong
start
,
end
;
/* Initialize the virtual machine */
start
=
CounterGet
();
if
(
!
InitializeJVM
(
&
vm
,
&
env
,
&
ifn
))
{
JLI_ReportErrorMessage
(
JVM_ERROR1
);
...
...
@@ -332,11 +345,7 @@ JavaMain(void * _args)
if
(
printVersion
||
showVersion
)
{
PrintJavaVersion
(
env
,
showVersion
);
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
goto
leave
;
}
CHECK_EXCEPTION_LEAVE
(
0
);
if
(
printVersion
)
{
ret
=
0
;
goto
leave
;
...
...
@@ -346,11 +355,7 @@ JavaMain(void * _args)
/* If the user specified neither a class name nor a JAR file */
if
(
printXUsage
||
printUsage
||
(
jarfile
==
0
&&
classname
==
0
))
{
PrintUsage
(
env
,
printXUsage
);
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
ret
=
1
;
}
CHECK_EXCEPTION_LEAVE
(
1
);
goto
leave
;
}
...
...
@@ -395,99 +400,25 @@ JavaMain(void * _args)
* the environment (and remove these comments).
*/
if
(
jarfile
!=
0
)
{
mainClassName
=
GetMainClassName
(
env
,
jarfile
);
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
goto
leave
;
}
if
(
mainClassName
==
NULL
)
{
JLI_ReportErrorMessage
(
JAR_ERROR1
,
jarfile
,
GEN_ERROR
);
goto
leave
;
}
classname
=
(
char
*
)(
*
env
)
->
GetStringUTFChars
(
env
,
mainClassName
,
0
);
if
(
classname
==
NULL
)
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
goto
leave
;
}
mainClass
=
LoadClass
(
env
,
classname
);
if
(
mainClass
==
NULL
)
{
/* exception occured */
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
CLS_ERROR1
,
classname
);
goto
leave
;
}
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
mainClassName
,
classname
);
mainClass
=
LoadMainClass
(
env
,
JNI_TRUE
,
jarfile
);
}
else
{
mainClassName
=
NewPlatformString
(
env
,
classname
);
if
(
mainClassName
==
NULL
)
{
JLI_ReportErrorMessage
(
CLS_ERROR2
,
classname
,
GEN_ERROR
);
goto
leave
;
}
classname
=
(
char
*
)(
*
env
)
->
GetStringUTFChars
(
env
,
mainClassName
,
0
);
if
(
classname
==
NULL
)
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
goto
leave
;
}
mainClass
=
LoadClass
(
env
,
classname
);
if
(
mainClass
==
NULL
)
{
/* exception occured */
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
CLS_ERROR1
,
classname
);
goto
leave
;
}
(
*
env
)
->
ReleaseStringUTFChars
(
env
,
mainClassName
,
classname
);
mainClass
=
LoadMainClass
(
env
,
JNI_FALSE
,
classname
);
}
CHECK_EXCEPTION_NULL_LEAVE
(
mainClass
);
/* Get the application's main method */
/*
* The LoadMainClass not only loads the main class, it will also ensure
* that the main method's signature is correct, therefore further checking
* is not required. The main method is invoked here so that extraneous java
* stacks are not in the application stack trace.
*/
mainID
=
(
*
env
)
->
GetStaticMethodID
(
env
,
mainClass
,
"main"
,
"([Ljava/lang/String;)V"
);
if
(
mainID
==
NULL
)
{
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
}
else
{
JLI_ReportErrorMessage
(
CLS_ERROR3
);
}
goto
leave
;
}
{
/* Make sure the main method is public */
jint
mods
;
jmethodID
mid
;
jobject
obj
=
(
*
env
)
->
ToReflectedMethod
(
env
,
mainClass
,
mainID
,
JNI_TRUE
);
if
(
obj
==
NULL
)
{
/* exception occurred */
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
goto
leave
;
}
mid
=
(
*
env
)
->
GetMethodID
(
env
,
(
*
env
)
->
GetObjectClass
(
env
,
obj
),
"getModifiers"
,
"()I"
);
if
((
*
env
)
->
ExceptionOccurred
(
env
))
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
goto
leave
;
}
mods
=
(
*
env
)
->
CallIntMethod
(
env
,
obj
,
mid
);
if
((
mods
&
1
)
==
0
)
{
/* if (!Modifier.isPublic(mods)) ... */
JLI_ReportErrorMessage
(
CLS_ERROR4
);
goto
leave
;
}
}
CHECK_EXCEPTION_NULL_LEAVE
(
mainID
);
/* Build argument array */
mainArgs
=
NewPlatformStringArray
(
env
,
argv
,
argc
);
if
(
mainArgs
==
NULL
)
{
JLI_ReportExceptionDescription
(
env
);
JLI_ReportErrorMessage
(
JNI_ERROR
);
goto
leave
;
}
CHECK_EXCEPTION_NULL_LEAVE
(
mainArgs
);
/* Invoke main method. */
(
*
env
)
->
CallStaticVoidMethod
(
env
,
mainClass
,
mainID
,
mainArgs
);
...
...
@@ -498,8 +429,9 @@ JavaMain(void * _args)
*/
ret
=
(
*
env
)
->
ExceptionOccurred
(
env
)
==
NULL
?
0
:
1
;
leave:
/*
*
D
etach the main thread so that it appears to have ended when
*
Always d
etach the main thread so that it appears to have ended when
* the application's main method exits. This will invoke the
* uncaught exception handler machinery if main threw an
* exception. An uncaught exception handler cannot change the
...
...
@@ -508,10 +440,7 @@ JavaMain(void * _args)
if
((
*
vm
)
->
DetachCurrentThread
(
vm
)
!=
0
)
{
JLI_ReportErrorMessage
(
JVM_ERROR2
);
ret
=
1
;
goto
leave
;
}
leave:
/*
* Wait for all non-daemon threads to end, then destroy the VM.
* This will actually create a trivial new Java waiter thread
...
...
@@ -525,7 +454,6 @@ JavaMain(void * _args)
return
ret
;
}
/*
* Checks the command line options to find which JVM type was
* specified. If no command line option was given for the JVM type,
...
...
@@ -1159,7 +1087,7 @@ static jstring getPlatformEncoding(JNIEnv *env) {
if
(
propname
)
{
jclass
cls
;
jmethodID
mid
;
NULL_CHECK0
(
cls
=
(
*
env
)
->
Find
Class
(
env
,
"java/lang/System"
));
NULL_CHECK0
(
cls
=
FindBootStrap
Class
(
env
,
"java/lang/System"
));
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetStaticMethodID
(
env
,
cls
,
"getProperty"
,
...
...
@@ -1174,7 +1102,7 @@ static jstring getPlatformEncoding(JNIEnv *env) {
static
jboolean
isEncodingSupported
(
JNIEnv
*
env
,
jstring
enc
)
{
jclass
cls
;
jmethodID
mid
;
NULL_CHECK0
(
cls
=
(
*
env
)
->
Find
Class
(
env
,
"java/nio/charset/Charset"
));
NULL_CHECK0
(
cls
=
FindBootStrap
Class
(
env
,
"java/nio/charset/Charset"
));
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetStaticMethodID
(
env
,
cls
,
"isSupported"
,
...
...
@@ -1203,8 +1131,8 @@ NewPlatformString(JNIEnv *env, char *s)
jstring
str
=
0
;
(
*
env
)
->
SetByteArrayRegion
(
env
,
ary
,
0
,
len
,
(
jbyte
*
)
s
);
if
(
!
(
*
env
)
->
ExceptionOccurred
(
env
))
{
NULL_CHECK0
(
cls
=
FindBootStrapClass
(
env
,
"java/lang/String"
));
if
(
isEncodingSupported
(
env
,
enc
)
==
JNI_TRUE
)
{
NULL_CHECK0
(
cls
=
(
*
env
)
->
FindClass
(
env
,
"java/lang/String"
));
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"<init>"
,
"([BLjava/lang/String;)V"
));
str
=
(
*
env
)
->
NewObject
(
env
,
cls
,
mid
,
ary
,
enc
);
...
...
@@ -1215,7 +1143,6 @@ NewPlatformString(JNIEnv *env, char *s)
the encoding name, in which the StringCoding class will
pickup the iso-8859-1 as the fallback converter for us.
*/
NULL_CHECK0
(
cls
=
(
*
env
)
->
FindClass
(
env
,
"java/lang/String"
));
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"<init>"
,
"([B)V"
));
str
=
(
*
env
)
->
NewObject
(
env
,
cls
,
mid
,
ary
);
...
...
@@ -1238,7 +1165,7 @@ NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
jarray
ary
;
int
i
;
NULL_CHECK0
(
cls
=
(
*
env
)
->
Find
Class
(
env
,
"java/lang/String"
));
NULL_CHECK0
(
cls
=
FindBootStrap
Class
(
env
,
"java/lang/String"
));
NULL_CHECK0
(
ary
=
(
*
env
)
->
NewObjectArray
(
env
,
strc
,
cls
,
0
));
for
(
i
=
0
;
i
<
strc
;
i
++
)
{
jstring
str
=
NewPlatformString
(
env
,
*
strv
++
);
...
...
@@ -1250,25 +1177,26 @@ NewPlatformStringArray(JNIEnv *env, char **strv, int strc)
}
/*
* Loads a class, convert the '.' to '/'.
* Loads a class and verifies that the main class is present and it is ok to
* call it for more details refer to the java implementation.
*/
static
jclass
Load
Class
(
JNIEnv
*
env
,
char
*
name
)
Load
MainClass
(
JNIEnv
*
env
,
jboolean
isJar
,
char
*
name
)
{
char
*
buf
=
JLI_MemAlloc
(
JLI_StrLen
(
name
)
+
1
);
char
*
s
=
buf
,
*
t
=
name
,
c
;
jclass
cls
;
jmethodID
mid
;
jstring
str
;
jobject
result
;
jlong
start
,
end
;
if
(
JLI_IsTraceLauncher
())
if
(
JLI_IsTraceLauncher
())
{
start
=
CounterGet
();
do
{
c
=
*
t
++
;
*
s
++
=
(
c
==
'.'
)
?
'/'
:
c
;
}
while
(
c
!=
'\0'
);
cls
=
(
*
env
)
->
FindClass
(
env
,
buf
);
JLI_MemFree
(
buf
);
}
NULL_CHECK0
(
cls
=
FindBootStrapClass
(
env
,
"sun/launcher/LauncherHelper"
));
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetStaticMethodID
(
env
,
cls
,
"checkAndLoadMain"
,
"(ZZLjava/lang/String;)Ljava/lang/Object;"
));
str
=
(
*
env
)
->
NewStringUTF
(
env
,
name
);
result
=
(
*
env
)
->
CallStaticObjectMethod
(
env
,
cls
,
mid
,
JNI_TRUE
,
isJar
,
str
);
if
(
JLI_IsTraceLauncher
())
{
end
=
CounterGet
();
...
...
@@ -1277,49 +1205,9 @@ LoadClass(JNIEnv *env, char *name)
printf
(
"----_JAVA_LAUNCHER_DEBUG----
\n
"
);
}
return
cls
;
}
/*
* Returns the main class name for the specified jar file.
*/
static
jstring
GetMainClassName
(
JNIEnv
*
env
,
char
*
jarname
)
{
#define MAIN_CLASS "Main-Class"
jclass
cls
;
jmethodID
mid
;
jobject
jar
,
man
,
attr
;
jstring
str
,
result
=
0
;
NULL_CHECK0
(
cls
=
(
*
env
)
->
FindClass
(
env
,
"java/util/jar/JarFile"
));
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"<init>"
,
"(Ljava/lang/String;)V"
));
NULL_CHECK0
(
str
=
NewPlatformString
(
env
,
jarname
));
NULL_CHECK0
(
jar
=
(
*
env
)
->
NewObject
(
env
,
cls
,
mid
,
str
));
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetMethodID
(
env
,
cls
,
"getManifest"
,
"()Ljava/util/jar/Manifest;"
));
man
=
(
*
env
)
->
CallObjectMethod
(
env
,
jar
,
mid
);
if
(
man
!=
0
)
{
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetMethodID
(
env
,
(
*
env
)
->
GetObjectClass
(
env
,
man
),
"getMainAttributes"
,
"()Ljava/util/jar/Attributes;"
));
attr
=
(
*
env
)
->
CallObjectMethod
(
env
,
man
,
mid
);
if
(
attr
!=
0
)
{
NULL_CHECK0
(
mid
=
(
*
env
)
->
GetMethodID
(
env
,
(
*
env
)
->
GetObjectClass
(
env
,
attr
),
"getValue"
,
"(Ljava/lang/String;)Ljava/lang/String;"
));
NULL_CHECK0
(
str
=
NewPlatformString
(
env
,
MAIN_CLASS
));
result
=
(
*
env
)
->
CallObjectMethod
(
env
,
attr
,
mid
,
str
);
}
}
return
result
;
return
(
jclass
)
result
;
}
/*
* For tools, convert command line args thus:
* javac -cp foo:foo/"*" -J-ms32m ...
...
...
@@ -1522,7 +1410,7 @@ PrintJavaVersion(JNIEnv *env, jboolean extraLF)
jclass
ver
;
jmethodID
print
;
NULL_CHECK
(
ver
=
(
*
env
)
->
Find
Class
(
env
,
"sun/misc/Version"
));
NULL_CHECK
(
ver
=
FindBootStrap
Class
(
env
,
"sun/misc/Version"
));
NULL_CHECK
(
print
=
(
*
env
)
->
GetStaticMethodID
(
env
,
ver
,
(
extraLF
==
JNI_TRUE
)
?
"println"
:
"print"
,
...
...
@@ -1534,7 +1422,7 @@ PrintJavaVersion(JNIEnv *env, jboolean extraLF)
}
/*
* Prints default usage or the Xusage message, see sun.launcher.LauncherHelp.java
* Prints default usage or the Xusage message, see sun.launcher.LauncherHelp
er
.java
*/
static
void
PrintUsage
(
JNIEnv
*
env
,
jboolean
doXUsage
)
...
...
@@ -1544,7 +1432,7 @@ PrintUsage(JNIEnv* env, jboolean doXUsage)
jstring
jprogname
,
vm1
,
vm2
;
int
i
;
NULL_CHECK
(
cls
=
(
*
env
)
->
FindClass
(
env
,
"sun/launcher/LauncherHelp
"
));
NULL_CHECK
(
cls
=
FindBootStrapClass
(
env
,
"sun/launcher/LauncherHelper
"
));
if
(
doXUsage
)
{
...
...
src/share/bin/java.h
浏览文件 @
8e3b4641
...
...
@@ -180,4 +180,15 @@ static int ContinueInNewThread(InvocationFunctions* ifn, int argc, char** argv,
*/
void
InitLauncher
(
jboolean
javaw
);
/*
* This allows for finding classes from the VM's bootstrap class loader directly,
* FindClass uses the application class loader internally, this will cause
* unnecessary searching of the classpath for the required classes.
*
*/
typedef
jclass
(
JNICALL
FindClassFromBootLoader_t
(
JNIEnv
*
env
,
const
char
*
name
,
jboolean
throwError
));
jclass
FindBootStrapClass
(
JNIEnv
*
env
,
const
char
*
classname
);
#endif
/* _JAVA_H_ */
src/share/classes/com/sun/jmx/mbeanserver/Introspector.java
浏览文件 @
8e3b4641
...
...
@@ -228,7 +228,15 @@ public class Introspector {
// to generate the appropriate exception.
}
if
(
c
!=
null
)
{
MXBeanMappingFactory
factory
=
MXBeanMappingFactory
.
forInterface
(
c
);
MXBeanMappingFactory
factory
;
try
{
factory
=
MXBeanMappingFactory
.
forInterface
(
c
);
}
catch
(
IllegalArgumentException
e
)
{
NotCompliantMBeanException
ncmbe
=
new
NotCompliantMBeanException
(
e
.
getMessage
());
ncmbe
.
initCause
(
e
);
throw
ncmbe
;
}
return
new
MXBeanSupport
(
mbean
,
c
,
factory
);
}
checkCompliance
(
mbeanClass
);
...
...
src/share/classes/com/sun/jmx/mbeanserver/MXBeanSupport.java
浏览文件 @
8e3b4641
...
...
@@ -36,7 +36,6 @@ import javax.management.MBeanServer;
import
javax.management.NotCompliantMBeanException
;
import
javax.management.ObjectName
;
import
javax.management.openmbean.MXBeanMappingFactory
;
import
javax.management.openmbean.MXBeanMappingFactoryClass
;
/**
* Base class for MXBeans.
...
...
src/share/classes/java/io/CharConversionException.java
浏览文件 @
8e3b4641
/*
* Copyright 1996-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996-
2008
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
...
...
@@ -33,6 +33,8 @@ package java.io;
public
class
CharConversionException
extends
java
.
io
.
IOException
{
private
static
final
long
serialVersionUID
=
-
8680016352018427031L
;
/**
* This provides no detailed message.
*/
...
...
src/share/classes/java/io/EOFException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
0
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -41,6 +41,8 @@ package java.io;
*/
public
class
EOFException
extends
IOException
{
private
static
final
long
serialVersionUID
=
6433858223774886977L
;
/**
* Constructs an <code>EOFException</code> with <code>null</code>
* as its error detail message.
...
...
src/share/classes/java/io/FileNotFoundException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -41,6 +41,7 @@ package java.io;
*/
public
class
FileNotFoundException
extends
IOException
{
private
static
final
long
serialVersionUID
=
-
897856973823710492L
;
/**
* Constructs a <code>FileNotFoundException</code> with
...
...
src/share/classes/java/io/InterruptedIOException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
0
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -41,6 +41,8 @@ package java.io;
*/
public
class
InterruptedIOException
extends
IOException
{
private
static
final
long
serialVersionUID
=
4020568460727500567L
;
/**
* Constructs an <code>InterruptedIOException</code> with
* <code>null</code> as its error detail message.
...
...
src/share/classes/java/io/SyncFailedException.java
浏览文件 @
8e3b4641
/*
* Copyright 1996-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996-
2008
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
...
...
@@ -34,6 +34,8 @@ package java.io;
* @since JDK1.1
*/
public
class
SyncFailedException
extends
IOException
{
private
static
final
long
serialVersionUID
=
-
2353342684412443330L
;
/**
* Constructs an SyncFailedException with a detail message.
* A detail message is a String that describes this particular exception.
...
...
src/share/classes/java/io/UTFDataFormatException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
4
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -44,6 +44,8 @@ package java.io;
*/
public
class
UTFDataFormatException
extends
IOException
{
private
static
final
long
serialVersionUID
=
420743449228280612L
;
/**
* Constructs a <code>UTFDataFormatException</code> with
* <code>null</code> as its error detail message.
...
...
src/share/classes/java/io/UnsupportedEncodingException.java
浏览文件 @
8e3b4641
/*
* Copyright 1996-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996-
2008
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
...
...
@@ -33,6 +33,8 @@ package java.io;
public
class
UnsupportedEncodingException
extends
IOException
{
private
static
final
long
serialVersionUID
=
-
4274276298326136670L
;
/**
* Constructs an UnsupportedEncodingException without a detail message.
*/
...
...
src/share/classes/java/lang/AbstractMethodError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-200
5
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-200
8
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
...
...
@@ -37,6 +37,8 @@ package java.lang;
*/
public
class
AbstractMethodError
extends
IncompatibleClassChangeError
{
private
static
final
long
serialVersionUID
=
-
1654391082989018462L
;
/**
* Constructs an <code>AbstractMethodError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/ArithmeticException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -35,6 +35,8 @@ package java.lang;
*/
public
class
ArithmeticException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
2256477558314496007L
;
/**
* Constructs an <code>ArithmeticException</code> with no detail
* message.
...
...
src/share/classes/java/lang/ArrayIndexOutOfBoundsException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -35,6 +35,8 @@ package java.lang;
*/
public
class
ArrayIndexOutOfBoundsException
extends
IndexOutOfBoundsException
{
private
static
final
long
serialVersionUID
=
-
5116101128118950844L
;
/**
* Constructs an <code>ArrayIndexOutOfBoundsException</code> with no
* detail message.
...
...
src/share/classes/java/lang/ArrayStoreException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -39,6 +39,8 @@ package java.lang;
*/
public
class
ArrayStoreException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
4522193890499838241L
;
/**
* Constructs an <code>ArrayStoreException</code> with no detail message.
*/
...
...
src/share/classes/java/lang/AssertionError.java
浏览文件 @
8e3b4641
/*
* Copyright 2000-200
6
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2000-200
8
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
...
...
@@ -43,6 +43,8 @@ package java.lang;
* @since 1.4
*/
public
class
AssertionError
extends
Error
{
private
static
final
long
serialVersionUID
=
-
5013299493970297370L
;
/**
* Constructs an AssertionError with no detail message.
*/
...
...
src/share/classes/java/lang/ClassCastException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -39,6 +39,8 @@ package java.lang;
*/
public
class
ClassCastException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
9223365651070458532L
;
/**
* Constructs a <code>ClassCastException</code> with no detail message.
*/
...
...
src/share/classes/java/lang/ClassCircularityError.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
7
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -33,6 +33,8 @@ package java.lang;
* @since JDK1.0
*/
public
class
ClassCircularityError
extends
LinkageError
{
private
static
final
long
serialVersionUID
=
1054362542914539689L
;
/**
* Constructs a {@code ClassCircularityError} with no detail message.
*/
...
...
src/share/classes/java/lang/ClassFormatError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -35,6 +35,8 @@ package java.lang;
*/
public
class
ClassFormatError
extends
LinkageError
{
private
static
final
long
serialVersionUID
=
-
8420114879011949195L
;
/**
* Constructs a <code>ClassFormatError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/CloneNotSupportedException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -43,6 +43,8 @@ package java.lang;
public
class
CloneNotSupportedException
extends
Exception
{
private
static
final
long
serialVersionUID
=
5195511250079656443L
;
/**
* Constructs a <code>CloneNotSupportedException</code> with no
* detail message.
...
...
src/share/classes/java/lang/EnumConstantNotPresentException.java
浏览文件 @
8e3b4641
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2004
-2008
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
...
...
@@ -33,6 +33,8 @@ package java.lang;
* @since 1.5
*/
public
class
EnumConstantNotPresentException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
6046998521960521108L
;
/**
* The type of the missing enum constant.
*/
...
...
src/share/classes/java/lang/IllegalAccessError.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -37,6 +37,8 @@ package java.lang;
* @since JDK1.0
*/
public
class
IllegalAccessError
extends
IncompatibleClassChangeError
{
private
static
final
long
serialVersionUID
=
-
8988904074992417891L
;
/**
* Constructs an <code>IllegalAccessError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/IllegalAccessException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
0
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -57,6 +57,8 @@ package java.lang;
* @since JDK1.0
*/
public
class
IllegalAccessException
extends
Exception
{
private
static
final
long
serialVersionUID
=
6616958222490762034L
;
/**
* Constructs an <code>IllegalAccessException</code> without a
* detail message.
...
...
src/share/classes/java/lang/IllegalMonitorStateException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -40,6 +40,8 @@ package java.lang;
*/
public
class
IllegalMonitorStateException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
3713306369498869069L
;
/**
* Constructs an <code>IllegalMonitorStateException</code> with no
* detail message.
...
...
src/share/classes/java/lang/IllegalThreadStateException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -37,6 +37,8 @@ package java.lang;
* @since JDK1.0
*/
public
class
IllegalThreadStateException
extends
IllegalArgumentException
{
private
static
final
long
serialVersionUID
=
-
7626246362397460174L
;
/**
* Constructs an <code>IllegalThreadStateException</code> with no
* detail message.
...
...
src/share/classes/java/lang/IncompatibleClassChangeError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -35,6 +35,8 @@ package java.lang;
*/
public
class
IncompatibleClassChangeError
extends
LinkageError
{
private
static
final
long
serialVersionUID
=
-
4914975503642802119L
;
/**
* Constructs an <code>IncompatibleClassChangeError</code> with no
* detail message.
...
...
src/share/classes/java/lang/IndexOutOfBoundsException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -36,6 +36,8 @@ package java.lang;
*/
public
class
IndexOutOfBoundsException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
234122996006267687L
;
/**
* Constructs an <code>IndexOutOfBoundsException</code> with no
* detail message.
...
...
src/share/classes/java/lang/InstantiationError.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -40,6 +40,8 @@ package java.lang;
public
class
InstantiationError
extends
IncompatibleClassChangeError
{
private
static
final
long
serialVersionUID
=
-
4885810657349421204L
;
/**
* Constructs an <code>InstantiationError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/InstantiationException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
5
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -44,6 +44,8 @@ package java.lang;
*/
public
class
InstantiationException
extends
Exception
{
private
static
final
long
serialVersionUID
=
-
8441929162975509110L
;
/**
* Constructs an {@code InstantiationException} with no detail message.
*/
...
...
src/share/classes/java/lang/InternalError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -34,6 +34,8 @@ package java.lang;
*/
public
class
InternalError
extends
VirtualMachineError
{
private
static
final
long
serialVersionUID
=
-
9062593416125562365L
;
/**
* Constructs an <code>InternalError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/InterruptedException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
5
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -48,6 +48,8 @@ package java.lang;
*/
public
class
InterruptedException
extends
Exception
{
private
static
final
long
serialVersionUID
=
6700697376100628473L
;
/**
* Constructs an <code>InterruptedException</code> with no detail message.
*/
...
...
src/share/classes/java/lang/LinkageError.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -36,6 +36,8 @@ package java.lang;
*/
public
class
LinkageError
extends
Error
{
private
static
final
long
serialVersionUID
=
3579600108157160122L
;
/**
* Constructs a <code>LinkageError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/NegativeArraySizeException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -33,6 +33,8 @@ package java.lang;
*/
public
class
NegativeArraySizeException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
8960118058596991861L
;
/**
* Constructs a <code>NegativeArraySizeException</code> with no
* detail message.
...
...
src/share/classes/java/lang/NoClassDefFoundError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-200
0
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-200
8
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
...
...
@@ -40,6 +40,8 @@ package java.lang;
*/
public
class
NoClassDefFoundError
extends
LinkageError
{
private
static
final
long
serialVersionUID
=
9095859863287012458L
;
/**
* Constructs a <code>NoClassDefFoundError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/NoSuchFieldError.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -38,6 +38,8 @@ package java.lang;
*/
public
class
NoSuchFieldError
extends
IncompatibleClassChangeError
{
private
static
final
long
serialVersionUID
=
-
3456430195886129035L
;
/**
* Constructs a <code>NoSuchFieldException</code> with no detail message.
*/
...
...
src/share/classes/java/lang/NoSuchFieldException.java
浏览文件 @
8e3b4641
/*
* Copyright 1996-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996-
2008
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
...
...
@@ -32,6 +32,8 @@ package java.lang;
* @since JDK1.1
*/
public
class
NoSuchFieldException
extends
Exception
{
private
static
final
long
serialVersionUID
=
-
6143714805279938260L
;
/**
* Constructor.
*/
...
...
src/share/classes/java/lang/NoSuchMethodError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
199
8 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
200
8 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
...
...
@@ -39,6 +39,8 @@ package java.lang;
*/
public
class
NoSuchMethodError
extends
IncompatibleClassChangeError
{
private
static
final
long
serialVersionUID
=
-
3765521442372831335L
;
/**
* Constructs a <code>NoSuchMethodError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/NoSuchMethodException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -33,6 +33,8 @@ package java.lang;
*/
public
class
NoSuchMethodException
extends
Exception
{
private
static
final
long
serialVersionUID
=
5034388446362600923L
;
/**
* Constructs a <code>NoSuchMethodException</code> without a detail message.
*/
...
...
src/share/classes/java/lang/NullPointerException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -46,6 +46,8 @@ package java.lang;
*/
public
class
NullPointerException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
5162710183389028792L
;
/**
* Constructs a <code>NullPointerException</code> with no detail message.
*/
...
...
src/share/classes/java/lang/OutOfMemoryError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -35,6 +35,8 @@ package java.lang;
*/
public
class
OutOfMemoryError
extends
VirtualMachineError
{
private
static
final
long
serialVersionUID
=
8228564086184010517L
;
/**
* Constructs an <code>OutOfMemoryError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/StackOverflowError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -34,6 +34,8 @@ package java.lang;
*/
public
class
StackOverflowError
extends
VirtualMachineError
{
private
static
final
long
serialVersionUID
=
8609175038441759607L
;
/**
* Constructs a <code>StackOverflowError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/StringIndexOutOfBoundsException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-200
0
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-200
8
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
...
...
@@ -37,6 +37,8 @@ package java.lang;
*/
public
class
StringIndexOutOfBoundsException
extends
IndexOutOfBoundsException
{
private
static
final
long
serialVersionUID
=
-
6762910422159637258L
;
/**
* Constructs a <code>StringIndexOutOfBoundsException</code> with no
* detail message.
...
...
src/share/classes/java/lang/ThreadDeath.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
7
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -46,4 +46,6 @@ package java.lang;
* @since JDK1.0
*/
public
class
ThreadDeath
extends
Error
{}
public
class
ThreadDeath
extends
Error
{
private
static
final
long
serialVersionUID
=
-
4417128565033088268L
;
}
src/share/classes/java/lang/TypeNotPresentException.java
浏览文件 @
8e3b4641
/*
* Copyright 2003-200
4
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-200
8
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
...
...
@@ -40,6 +40,8 @@ package java.lang;
* @since 1.5
*/
public
class
TypeNotPresentException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
5101214195716534496L
;
private
String
typeName
;
/**
...
...
src/share/classes/java/lang/UnknownError.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -34,6 +34,8 @@ package java.lang;
*/
public
class
UnknownError
extends
VirtualMachineError
{
private
static
final
long
serialVersionUID
=
2524784860676771849L
;
/**
* Constructs an <code>UnknownError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/UnsatisfiedLinkError.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
2008
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
...
...
@@ -35,6 +35,8 @@ package java.lang;
*/
public
class
UnsatisfiedLinkError
extends
LinkageError
{
private
static
final
long
serialVersionUID
=
-
4019343241616879428L
;
/**
* Constructs an <code>UnsatisfiedLinkError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/UnsupportedClassVersionError.java
浏览文件 @
8e3b4641
/*
* Copyright 1998-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1998-
2008
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
...
...
@@ -34,6 +34,8 @@ package java.lang;
*/
public
class
UnsupportedClassVersionError
extends
ClassFormatError
{
private
static
final
long
serialVersionUID
=
-
7123279212883497373L
;
/**
* Constructs a <code>UnsupportedClassVersionError</code>
* with no detail message.
...
...
src/share/classes/java/lang/VerifyError.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-
1997
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-
2008
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
...
...
@@ -35,6 +35,8 @@ package java.lang;
*/
public
class
VerifyError
extends
LinkageError
{
private
static
final
long
serialVersionUID
=
7001962396098498785L
;
/**
* Constructs an <code>VerifyError</code> with no detail message.
*/
...
...
src/share/classes/java/lang/annotation/AnnotationFormatError.java
浏览文件 @
8e3b4641
/*
* Copyright 2004 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2004
-2008
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
...
...
@@ -33,6 +33,8 @@ package java.lang.annotation;
* @since 1.5
*/
public
class
AnnotationFormatError
extends
Error
{
private
static
final
long
serialVersionUID
=
-
4256701562333669892L
;
/**
* Constructs a new <tt>AnnotationFormatError</tt> with the specified
* detail message.
...
...
src/share/classes/java/lang/annotation/AnnotationTypeMismatchException.java
浏览文件 @
8e3b4641
/*
* Copyright 2003-200
4
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-200
8
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
...
...
@@ -35,6 +35,8 @@ import java.lang.reflect.Method;
* @since 1.5
*/
public
class
AnnotationTypeMismatchException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
8125925355765570191L
;
/**
* The <tt>Method</tt> object for the annotation element.
*/
...
...
src/share/classes/java/lang/annotation/IncompleteAnnotationException.java
浏览文件 @
8e3b4641
/*
* Copyright 2003-200
4
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-200
8
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
...
...
@@ -35,6 +35,8 @@ package java.lang.annotation;
* @since 1.5
*/
public
class
IncompleteAnnotationException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
8445097402741811912L
;
private
Class
annotationType
;
private
String
elementName
;
...
...
src/share/classes/java/lang/instrument/IllegalClassFormatException.java
浏览文件 @
8e3b4641
/*
* Copyright 2003-200
6
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-200
8
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
...
...
@@ -40,6 +40,8 @@ package java.lang.instrument;
* @since 1.5
*/
public
class
IllegalClassFormatException
extends
Exception
{
private
static
final
long
serialVersionUID
=
-
3841736710924794009L
;
/**
* Constructs an <code>IllegalClassFormatException</code> with no
* detail message.
...
...
src/share/classes/java/lang/instrument/UnmodifiableClassException.java
浏览文件 @
8e3b4641
/*
* Copyright 2004-200
6
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2004-200
8
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
...
...
@@ -34,6 +34,8 @@ package java.lang.instrument;
* @since 1.5
*/
public
class
UnmodifiableClassException
extends
Exception
{
private
static
final
long
serialVersionUID
=
1716652643585309178L
;
/**
* Constructs an <code>UnmodifiableClassException</code> with no
* detail message.
...
...
src/share/classes/java/lang/management/ManagementPermission.java
浏览文件 @
8e3b4641
/*
* Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003
-2008
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
...
...
@@ -83,6 +83,7 @@ at the permission allows, and associated risks">
*/
public
final
class
ManagementPermission
extends
java
.
security
.
BasicPermission
{
private
static
final
long
serialVersionUID
=
1897496590799378737L
;
/**
* Constructs a ManagementPermission with the specified name.
...
...
src/share/classes/java/lang/reflect/GenericSignatureFormatError.java
浏览文件 @
8e3b4641
/*
* Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003
-2008
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
...
...
@@ -33,4 +33,6 @@ package java.lang.reflect;
*
* @since 1.5
*/
public
class
GenericSignatureFormatError
extends
ClassFormatError
{}
public
class
GenericSignatureFormatError
extends
ClassFormatError
{
private
static
final
long
serialVersionUID
=
6709919147137911034L
;
}
src/share/classes/java/lang/reflect/MalformedParameterizedTypeException.java
浏览文件 @
8e3b4641
/*
* Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003
-2008
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
...
...
@@ -34,4 +34,6 @@ package java.lang.reflect;
*
* @since 1.5
*/
public
class
MalformedParameterizedTypeException
extends
RuntimeException
{}
public
class
MalformedParameterizedTypeException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
5696557788586220964L
;
}
src/share/classes/java/util/ConcurrentModificationException.java
浏览文件 @
8e3b4641
/*
* Copyright 1997-200
6
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-200
8
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
...
...
@@ -67,6 +67,8 @@ package java.util;
* @since 1.2
*/
public
class
ConcurrentModificationException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
-
3666751008965953603L
;
/**
* Constructs a ConcurrentModificationException with no
* detail message.
...
...
src/share/classes/java/util/EmptyStackException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
199
8 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
200
8 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
...
...
@@ -35,6 +35,8 @@ package java.util;
*/
public
class
EmptyStackException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
5084686378493302095L
;
/**
* Constructs a new <code>EmptyStackException</code> with <tt>null</tt>
* as its error message string.
...
...
src/share/classes/java/util/InputMismatchException.java
浏览文件 @
8e3b4641
/*
* Copyright 2003-200
6
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2003-200
8
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
...
...
@@ -36,6 +36,8 @@ package java.util;
*/
public
class
InputMismatchException
extends
NoSuchElementException
{
private
static
final
long
serialVersionUID
=
8811230760997066428L
;
/**
* Constructs an <code>InputMismatchException</code> with <tt>null</tt>
* as its error message string.
...
...
src/share/classes/java/util/NoSuchElementException.java
浏览文件 @
8e3b4641
/*
* Copyright 1994-
199
8 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1994-
200
8 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
...
...
@@ -37,6 +37,8 @@ package java.util;
*/
public
class
NoSuchElementException
extends
RuntimeException
{
private
static
final
long
serialVersionUID
=
6769829250639411880L
;
/**
* Constructs a <code>NoSuchElementException</code> with <tt>null</tt>
* as its error message string.
...
...
src/share/classes/java/util/TooManyListenersException.java
浏览文件 @
8e3b4641
/*
* Copyright 1996-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996-
2008
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
...
...
@@ -48,6 +48,7 @@ package java.util;
*/
public
class
TooManyListenersException
extends
Exception
{
private
static
final
long
serialVersionUID
=
5074640544770687831L
;
/**
* Constructs a TooManyListenersException with no detail message.
...
...
src/share/classes/java/util/jar/JarException.java
浏览文件 @
8e3b4641
/*
* Copyright 1997-
1999
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1997-
2008
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
...
...
@@ -34,6 +34,8 @@ package java.util.jar;
*/
public
class
JarException
extends
java
.
util
.
zip
.
ZipException
{
private
static
final
long
serialVersionUID
=
7159778400963954473L
;
/**
* Constructs a JarException with no detail message.
*/
...
...
src/share/classes/java/util/regex/PatternSyntaxException.java
浏览文件 @
8e3b4641
/*
* Copyright 1999-200
6
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1999-200
8
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
...
...
@@ -40,6 +40,7 @@ import sun.security.action.GetPropertyAction;
public
class
PatternSyntaxException
extends
IllegalArgumentException
{
private
static
final
long
serialVersionUID
=
-
3864639126226059218L
;
private
final
String
desc
;
private
final
String
pattern
;
...
...
src/share/classes/java/util/zip/DataFormatException.java
浏览文件 @
8e3b4641
/*
* Copyright 1996 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1996
-2008
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
...
...
@@ -32,6 +32,8 @@ package java.util.zip;
*/
public
class
DataFormatException
extends
Exception
{
private
static
final
long
serialVersionUID
=
2219632870893641452L
;
/**
* Constructs a DataFormatException with no detail message.
*/
...
...
src/share/classes/java/util/zip/ZipException.java
浏览文件 @
8e3b4641
/*
* Copyright 1995-200
1
Sun Microsystems, Inc. All Rights Reserved.
* Copyright 1995-200
8
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
...
...
@@ -37,6 +37,8 @@ import java.io.IOException;
public
class
ZipException
extends
IOException
{
private
static
final
long
serialVersionUID
=
8000196834066748623L
;
/**
* Constructs an <code>ZipException</code> with <code>null</code>
* as its error detail message.
...
...
src/share/classes/javax/management/openmbean/MXBeanMappingFactory.java
浏览文件 @
8e3b4641
...
...
@@ -48,7 +48,7 @@ import java.lang.reflect.Type;
* effect by defining {@code MyLinkedListMappingFactory} as follows:</p>
*
* <pre>
* public class MyLinkedListMappingFactory
implement
s MXBeanMappingFactory {
* public class MyLinkedListMappingFactory
extend
s MXBeanMappingFactory {
* public MyLinkedListMappingFactory() {}
*
* public MXBeanMapping mappingForType(Type t, MXBeanMappingFactory f)
...
...
src/share/classes/sun/launcher/LauncherHelp.java
→
src/share/classes/sun/launcher/LauncherHelp
er
.java
浏览文件 @
8e3b4641
/*
* Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2007
-2008
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
...
...
@@ -37,23 +37,30 @@ package sun.launcher;
/**
* A utility package for the java(1), javaw(1) launchers.
* The following are helper methods that the native launcher uses
* to perform checks etc. using JNI, see src/share/bin/java.c
*/
import
java.io.File
;
import
java.io.IOException
;
import
java.io.PrintStream
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Modifier
;
import
java.util.ResourceBundle
;
import
java.text.MessageFormat
;
public
class
LauncherHelp
{
private
static
final
String
defaultBundleName
=
"sun.launcher.resources.launcher"
;
private
static
ResourceBundle
javarb
=
ResourceBundle
.
getBundle
(
defaultBundleName
);
import
java.util.jar.Attributes
;
import
java.util.jar.JarFile
;
import
java.util.jar.Manifest
;
public
enum
LauncherHelper
{
INSTANCE
;
private
static
final
String
defaultBundleName
=
"sun.launcher.resources.launcher"
;
private
static
ResourceBundle
javarb
=
ResourceBundle
.
getBundle
(
defaultBundleName
);
private
static
final
String
MAIN_CLASS
=
"Main-Class"
;
private
static
StringBuilder
outBuf
=
new
StringBuilder
();
/** Creates a new instance of LauncherHelp, keep it a singleton */
private
LauncherHelp
(){}
/**
* A private helper method to get a localized message and also
* apply any arguments that we might pass.
...
...
@@ -71,9 +78,12 @@ public class LauncherHelp {
* assembles the invariant header part of the message.
*/
static
void
initHelpMessage
(
String
progname
)
{
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.header"
,
(
progname
==
null
)
?
"java"
:
progname
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.datamodel"
,
32
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.datamodel"
,
64
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.header"
,
(
progname
==
null
)
?
"java"
:
progname
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.datamodel"
,
32
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.datamodel"
,
64
));
}
/**
...
...
@@ -81,7 +91,8 @@ public class LauncherHelp {
* initHelpSystem must already be called.
*/
static
void
appendVmSelectMessage
(
String
vm1
,
String
vm2
)
{
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.vmselect"
,
vm1
,
vm2
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.vmselect"
,
vm1
,
vm2
));
}
/**
...
...
@@ -89,7 +100,8 @@ public class LauncherHelp {
* initHelpSystem must be called before using this method.
*/
static
void
appendVmSynonymMessage
(
String
vm1
,
String
vm2
)
{
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.hotspot"
,
vm1
,
vm2
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.hotspot"
,
vm1
,
vm2
));
}
/**
...
...
@@ -97,9 +109,11 @@ public class LauncherHelp {
* initHelpSystem must be called before using this method.
*/
static
void
appendVmErgoMessage
(
boolean
isServerClass
,
String
vm
)
{
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.ergo.message1"
,
vm
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.ergo.message1"
,
vm
));
outBuf
=
(
isServerClass
)
?
outBuf
.
append
(
",\n"
+
getLocalizedMessage
(
"java.launcher.ergo.message2"
)
+
"\n\n"
)
?
outBuf
.
append
(
",\n"
+
getLocalizedMessage
(
"java.launcher.ergo.message2"
)
+
"\n\n"
)
:
outBuf
.
append
(
".\n\n"
);
}
...
...
@@ -110,7 +124,8 @@ public class LauncherHelp {
*/
static
void
printHelpMessage
(
boolean
printToStderr
)
{
PrintStream
ostream
=
(
printToStderr
)
?
System
.
err
:
System
.
out
;
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.footer"
,
File
.
pathSeparator
));
outBuf
=
outBuf
.
append
(
getLocalizedMessage
(
"java.launcher.opt.footer"
,
File
.
pathSeparator
));
ostream
.
println
(
outBuf
.
toString
());
}
...
...
@@ -119,20 +134,105 @@ public class LauncherHelp {
*/
static
void
printXUsageMessage
(
boolean
printToStderr
)
{
PrintStream
ostream
=
(
printToStderr
)
?
System
.
err
:
System
.
out
;
ostream
.
println
(
getLocalizedMessage
(
"java.launcher.X.usage"
,
File
.
pathSeparator
));
ostream
.
println
(
getLocalizedMessage
(
"java.launcher.X.usage"
,
File
.
pathSeparator
));
}
/* Test code */
public
static
void
main
(
String
[]
args
)
{
initHelpMessage
(
"java"
);
appendVmSelectMessage
(
"-client"
,
"client"
);
appendVmSelectMessage
(
"-server"
,
"server"
);
appendVmSynonymMessage
(
"-hotspot"
,
"client"
);
appendVmErgoMessage
(
true
,
"server"
);
printHelpMessage
(
true
);
static
String
getMainClassFromJar
(
String
jarname
)
throws
IOException
{
JarFile
jarFile
=
null
;
try
{
jarFile
=
new
JarFile
(
jarname
);
Manifest
manifest
=
jarFile
.
getManifest
();
if
(
manifest
==
null
)
{
throw
new
IOException
(
"manifest not found in "
+
jarname
);
}
Attributes
mainAttrs
=
manifest
.
getMainAttributes
();
if
(
mainAttrs
==
null
)
{
throw
new
IOException
(
"no main mainifest attributes, in "
+
jarname
);
}
return
mainAttrs
.
getValue
(
MAIN_CLASS
);
}
finally
{
if
(
jarFile
!=
null
)
{
jarFile
.
close
();
}
}
}
System
.
err
.
println
(
"------------------------------------"
);
/**
* This method does the following:
* 1. gets the classname from a Jar's manifest, if necessary
* 2. loads the class using the System ClassLoader
* 3. ensures the availability and accessibility of the main method,
* using signatureDiagnostic method.
* a. does the class exist
* b. is there a main
* c. is the main public
* d. is the main static
* c. does the main take a String array for args
* 4. and off we go......
*
* @param printToStderr
* @param isJar
* @param name
* @return
* @throws java.lang.Exception
*/
public
static
Object
checkAndLoadMain
(
boolean
printToStderr
,
boolean
isJar
,
String
name
)
throws
Exception
{
// get the class name
String
classname
=
(
isJar
)
?
getMainClassFromJar
(
name
)
:
name
;
classname
=
classname
.
replace
(
'/'
,
'.'
);
ClassLoader
loader
=
ClassLoader
.
getSystemClassLoader
();
Class
<?>
clazz
=
null
;
PrintStream
ostream
=
(
printToStderr
)
?
System
.
err
:
System
.
out
;
try
{
clazz
=
loader
.
loadClass
(
classname
);
}
catch
(
ClassNotFoundException
cnfe
)
{
ostream
.
println
(
getLocalizedMessage
(
"java.launcher.cls.error1"
,
classname
));
throw
new
RuntimeException
(
"Could not find the main class "
+
classname
);
}
signatureDiagnostic
(
ostream
,
clazz
);
return
clazz
;
}
printXUsageMessage
(
true
);
static
void
signatureDiagnostic
(
PrintStream
ostream
,
Class
<?>
clazz
)
{
String
classname
=
clazz
.
getName
();
Method
method
=
null
;
try
{
method
=
clazz
.
getMethod
(
"main"
,
String
[].
class
);
}
catch
(
Exception
e
)
{
ostream
.
println
(
getLocalizedMessage
(
"java.launcher.cls.error4"
,
classname
));
throw
new
RuntimeException
(
"Main method not found in "
+
classname
);
}
/*
* Usually the getMethod (above) will choose the correct method, based
* on its modifiers and parameter types, the only check required is the
* getReturnType check as getMethod does not check for this, all the
* other modifier tests are redundant, and are simply here for safety.
*/
int
mod
=
method
.
getModifiers
();
if
(!
Modifier
.
isStatic
(
mod
))
{
ostream
.
println
(
getLocalizedMessage
(
"java.launcher.cls.error2"
,
"static"
,
classname
));
throw
new
RuntimeException
(
"Main method is not static in class "
+
classname
);
}
if
(!
Modifier
.
isPublic
(
mod
))
{
ostream
.
println
(
getLocalizedMessage
(
"java.launcher.cls.error2"
,
"public"
,
classname
));
throw
new
RuntimeException
(
"Main method is not public in class "
+
classname
);
}
Class
<?>
rType
=
method
.
getReturnType
();
if
(!
rType
.
isPrimitive
()
||
!
rType
.
getName
().
equals
(
"void"
))
{
ostream
.
println
(
getLocalizedMessage
(
"java.launcher.cls.error3"
,
classname
));
throw
new
RuntimeException
(
"Main method must return a value"
+
" of type void in class "
+
classname
);
}
return
;
}
}
src/share/classes/sun/launcher/resources/launcher.properties
浏览文件 @
8e3b4641
#
# Copyright 2007 Sun Microsystems, Inc. All Rights Reserved.
# Copyright 2007
-2008
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
...
...
@@ -99,3 +99,18 @@ java.launcher.X.usage=\
\
-Xshare:auto use shared class data if possible (default)
\n\
\
-Xshare:on require using shared class data, otherwise fail.
\n\n\
The -X options are non-standard and subject to change without notice.
\n
java.launcher.cls.error1
=
\
Error: Could not find main class {0}
java.launcher.cls.error2
=
\
Error: Main method is not {0} in class {1}, please define the main method as:
\n\
\
public static void main(String[] args)
java.launcher.cls.error3
=
\
Error: Main method must return a value of type void in class {0}, please
\n\
define the main method as:
\n\
\
public static void main(String[] args)
java.launcher.cls.error4
=
\
Error: Main method not found in class {0}, please define the main method as:
\n\
\
public static void main(String[] args)
src/solaris/bin/java_md.c
浏览文件 @
8e3b4641
...
...
@@ -1312,3 +1312,24 @@ InitLauncher(jboolean javaw)
{
JLI_SetTraceLauncher
();
}
/*
* The implementation for finding classes from the bootstrap
* class loader, refer to java.h
*/
static
FindClassFromBootLoader_t
*
findBootClass
=
NULL
;
jclass
FindBootStrapClass
(
JNIEnv
*
env
,
const
char
*
classname
)
{
if
(
findBootClass
==
NULL
)
{
findBootClass
=
(
FindClassFromBootLoader_t
*
)
dlsym
(
RTLD_DEFAULT
,
"JVM_FindClassFromBootLoader"
);
if
(
findBootClass
==
NULL
)
{
JLI_ReportErrorMessage
(
DLL_ERROR4
,
"JVM_FindClassFromBootLoader"
);
return
NULL
;
}
}
return
findBootClass
(
env
,
classname
,
JNI_FALSE
);
}
src/windows/bin/java_md.c
浏览文件 @
8e3b4641
...
...
@@ -993,9 +993,34 @@ ContinueInNewThread0(int (JNICALL *continuation)(void *), jlong stack_size, void
return
rslt
;
}
/*
Linu
x only, empty on windows. */
/*
Uni
x only, empty on windows. */
void
SetJavaLauncherPlatformProps
()
{}
/*
* The implementation for finding classes from the bootstrap
* class loader, refer to java.h
*/
static
FindClassFromBootLoader_t
*
findBootClass
=
NULL
;
jclass
FindBootStrapClass
(
JNIEnv
*
env
,
const
char
*
classname
)
{
HMODULE
hJvm
;
if
(
findBootClass
==
NULL
)
{
hJvm
=
GetModuleHandle
(
JVM_DLL
);
if
(
hJvm
==
NULL
)
return
NULL
;
/* need to use the demangled entry point */
findBootClass
=
(
FindClassFromBootLoader_t
*
)
GetProcAddress
(
hJvm
,
"JVM_FindClassFromBootLoader"
);
if
(
findBootClass
==
NULL
)
{
JLI_ReportErrorMessage
(
DLL_ERROR4
,
"JVM_FindClassBootLoader"
);
return
NULL
;
}
}
return
findBootClass
(
env
,
classname
,
JNI_FALSE
);
}
void
InitLauncher
(
boolean
javaw
)
{
...
...
test/javax/management/mxbean/CustomTypeTest.java
浏览文件 @
8e3b4641
...
...
@@ -22,7 +22,7 @@
*/
/* @test %M% %I%
* @bug 6562936
* @bug 6562936
6750935
* @run compile customtypes/package-info.java
* @run main CustomTypeTest
*/
...
...
@@ -342,6 +342,38 @@ public class CustomTypeTest {
}
}
public
static
class
BadConstructorMXBeanMappingFactory1
extends
MXBeanMappingFactory
{
private
BadConstructorMXBeanMappingFactory1
()
{}
@Override
public
MXBeanMapping
mappingForType
(
Type
arg0
,
MXBeanMappingFactory
arg1
)
throws
OpenDataException
{
throw
new
UnsupportedOperationException
(
"Should not be called"
);
}
}
public
static
class
BadConstructorMXBeanMappingFactory2
extends
MXBeanMappingFactory
{
public
BadConstructorMXBeanMappingFactory2
(
boolean
oops
)
{}
@Override
public
MXBeanMapping
mappingForType
(
Type
arg0
,
MXBeanMappingFactory
arg1
)
throws
OpenDataException
{
throw
new
UnsupportedOperationException
(
"Should not be called"
);
}
}
@MXBeanMappingFactoryClass
(
BadConstructorMXBeanMappingFactory1
.
class
)
public
static
interface
BadConstructor1MXBean
{}
public
static
class
BadConstructor1
implements
BadConstructor1MXBean
{}
@MXBeanMappingFactoryClass
(
BadConstructorMXBeanMappingFactory2
.
class
)
public
static
interface
BadConstructor2MXBean
{}
public
static
class
BadConstructor2
implements
BadConstructor2MXBean
{}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
MBeanServer
mbs
=
ManagementFactory
.
getPlatformMBeanServer
();
...
...
@@ -407,8 +439,10 @@ public class CustomTypeTest {
try
{
mbs
.
registerMBean
(
new
ReallyBrokenImpl
(),
new
ObjectName
(
"d:type=Broken"
));
fail
(
"Register did not throw exception"
);
}
catch
(
IllegalArgument
Exception
e
)
{
}
catch
(
NotCompliantMBean
Exception
e
)
{
System
.
out
.
println
(
"...OK: threw: "
+
e
);
}
catch
(
Exception
e
)
{
fail
(
"Register threw wrong exception: "
+
e
);
}
System
.
out
.
println
(
"Test MXBeanMappingFactory exception with StandardMBean"
);
...
...
@@ -433,6 +467,24 @@ public class CustomTypeTest {
System
.
out
.
println
(
"...OK: threw: "
+
e
);
}
System
.
out
.
println
(
"Test MXBeanMappingFactoryClass constructor exception"
);
for
(
Object
mbean
:
new
Object
[]
{
new
BadConstructor1
(),
new
BadConstructor2
(),
})
{
String
testName
=
mbean
.
getClass
().
getSimpleName
();
try
{
ObjectName
name
=
new
ObjectName
(
"d:type="
+
testName
);
mbs
.
registerMBean
(
mbean
,
name
);
fail
(
"Broken MXBeanMappingFactoryClass did not throw exception"
+
" ("
+
testName
+
")"
);
}
catch
(
NotCompliantMBeanException
e
)
{
System
.
out
.
println
(
"...OK: "
+
testName
+
" threw: "
+
e
);
}
catch
(
Exception
e
)
{
fail
(
"Broken MXBeanMappingFactoryClass "
+
testName
+
" threw "
+
"wrong exception: "
+
e
);
}
}
if
(
failure
==
null
)
System
.
out
.
println
(
"TEST PASSED"
);
else
...
...
test/tools/launcher/Arrrghs.java
浏览文件 @
8e3b4641
...
...
@@ -21,57 +21,47 @@
* have any questions.
*/
/**
* @test
* @compile -XDignore.symbol.file Arrrghs.java TestHelper.java
* @bug 5030233 6214916 6356475 6571029 6684582
* @run main Arrrghs
* @summary Argument parsing validation.
*/
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.StringTokenizer
;
public
class
Arrrghs
{
private
Arrrghs
(){}
/**
* This class provides various tests for arguments processing.
* A group of tests to ensure that arguments are passed correctly to
* a child java process upon a re-exec, this typically happens when
* a version other than the one being executed is requested by the user.
*
* History: these set of tests were part of Arrrghs.sh. The MKS shell
* implementations
a
re notoriously buggy. Implementing these tests purely
* implementations
we
re notoriously buggy. Implementing these tests purely
* in Java is not only portable but also robust.
*
*/
/* Do not instantiate */
private
Arrrghs
()
{}
static
String
javaCmd
;
// The version string to force a re-exec
final
static
String
VersionStr
=
"-version:1.1+"
;
// The Cookie or the pattern we match in the debug output.
final
static
String
Cookie
=
"ReExec Args: "
;
private
static
boolean
_debug
=
Boolean
.
getBoolean
(
"Arrrghs.Debug"
);
private
static
boolean
isWindows
=
System
.
getProperty
(
"os.name"
,
"unknown"
).
startsWith
(
"Windows"
);
private
static
int
exitValue
=
0
;
private
static
void
doUsage
(
String
message
)
{
if
(
message
!=
null
)
System
.
out
.
println
(
"Error: "
+
message
);
System
.
out
.
println
(
"Usage: Arrrghs path_to_java"
);
System
.
exit
(
1
);
}
/*
* SIGH, On Windows all strings are quoted, we need to unwrap it
*/
private
static
String
removeExtraQuotes
(
String
in
)
{
if
(
isWindows
)
{
if
(
TestHelper
.
isWindows
)
{
// Trim the string and remove the enclosed quotes if any.
in
=
in
.
trim
();
if
(
in
.
startsWith
(
"\""
)
&&
in
.
endsWith
(
"\""
))
{
...
...
@@ -81,27 +71,29 @@ public class Arrrghs {
return
in
;
}
/*
* This method detects the cookie in the output stream of the process.
*/
private
static
boolean
detectCookie
(
InputStream
istream
,
String
expectedArguments
)
throws
IOException
{
private
static
boolean
detectCookie
(
InputStream
istream
,
String
expectedArguments
)
throws
IOException
{
BufferedReader
rd
=
new
BufferedReader
(
new
InputStreamReader
(
istream
));
boolean
retval
=
false
;
String
in
=
rd
.
readLine
();
while
(
in
!=
null
)
{
if
(
_
debug
)
System
.
out
.
println
(
in
);
if
(
TestHelper
.
debug
)
System
.
out
.
println
(
in
);
if
(
in
.
startsWith
(
Cookie
))
{
String
detectedArgument
=
removeExtraQuotes
(
in
.
substring
(
Cookie
.
length
()));
if
(
expectedArguments
.
equals
(
detectedArgument
))
{
retval
=
true
;
}
else
{
System
.
out
.
println
(
"Error: Expected Arguments\t:'"
+
expectedArguments
+
"'"
);
System
.
out
.
println
(
" Detected Arguments\t:'"
+
detectedArgument
+
"'"
);
System
.
out
.
println
(
"Error: Expected Arguments\t:'"
+
expectedArguments
+
"'"
);
System
.
out
.
println
(
" Detected Arguments\t:'"
+
detectedArgument
+
"'"
);
}
// Return the value asap if not in debug mode.
if
(!
_
debug
)
{
if
(!
TestHelper
.
debug
)
{
rd
.
close
();
istream
.
close
();
return
retval
;
...
...
@@ -112,7 +104,7 @@ public class Arrrghs {
return
retval
;
}
private
static
boolean
do
Exec
0
(
ProcessBuilder
pb
,
String
expectedArguments
)
{
private
static
boolean
do
Test
0
(
ProcessBuilder
pb
,
String
expectedArguments
)
{
boolean
retval
=
false
;
try
{
pb
.
redirectErrorStream
(
true
);
...
...
@@ -131,72 +123,199 @@ public class Arrrghs {
* This method return true if the expected and detected arguments are the same.
* Quoting could cause dissimilar testArguments and expected arguments.
*/
static
boolean
doExec
(
String
testArguments
,
String
expectedPattern
)
{
ProcessBuilder
pb
=
new
ProcessBuilder
(
javaCmd
,
VersionStr
,
testArguments
);
static
int
doTest
(
String
testArguments
,
String
expectedPattern
)
{
ProcessBuilder
pb
=
new
ProcessBuilder
(
TestHelper
.
javaCmd
,
VersionStr
,
testArguments
);
Map
<
String
,
String
>
env
=
pb
.
environment
();
env
.
put
(
"_JAVA_LAUNCHER_DEBUG"
,
"true"
);
return
do
Exec0
(
pb
,
testArguments
)
;
return
do
Test0
(
pb
,
testArguments
)
?
0
:
1
;
}
/**
* A convenience method for identical test pattern and expected arguments
*/
static
boolean
doExec
(
String
testPattern
)
{
return
do
Exec
(
testPattern
,
testPattern
);
static
int
doTest
(
String
testPattern
)
{
return
do
Test
(
testPattern
,
testPattern
);
}
/**
* @param args the command line arguments
*/
public
static
void
main
(
String
[]
args
)
{
if
(
args
.
length
<
1
&&
args
[
0
]
==
null
)
{
doUsage
(
"Invalid number of arguments"
);
}
javaCmd
=
args
[
0
];
if
(!
new
File
(
javaCmd
).
canExecute
())
{
if
(
isWindows
&&
new
File
(
javaCmd
+
".exe"
).
canExecute
())
{
javaCmd
=
javaCmd
+
".exe"
;
}
else
{
doUsage
(
"The java executable must exist"
);
}
static
void
quoteParsingTests
()
{
/*
* Tests for 6214916
* These tests require that a JVM (any JVM) be installed in the system registry.
* If none is installed, skip this test.
*/
TestHelper
.
TestResult
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
VersionStr
,
"-version"
);
if
(!
tr
.
isOK
())
{
System
.
err
.
println
(
"Warning:Argument Passing Tests were skipped, "
+
"no java found in system registry."
);
return
;
}
if
(
_debug
)
System
.
out
.
println
(
"Starting Arrrghs tests"
);
// Basic test
if
(!
doExec
(
"-a -b -c -d"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"-a -b -c -d"
)
;
// Basic test with many spaces
if
(!
doExec
(
"-a -b -c -d"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"-a -b -c -d"
)
;
// Quoted whitespace does matter ?
if
(!
doExec
(
"-a \"\"-b -c\"\" -d"
))
exitValue
++;
TestHelper
.
testExitValue
+=
doTest
(
"-a \"\"-b -c\"\" -d"
);
// Escaped quotes outside of quotes as literals
if
(!
doExec
(
"-a \\\"-b -c\\\" -d"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"-a \\\"-b -c\\\" -d"
)
;
// Check for escaped quotes inside of quotes as literal
if
(!
doExec
(
"-a \"-b \\\"stuff\\\"\" -c -d"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"-a \"-b \\\"stuff\\\"\" -c -d"
)
;
// A quote preceeded by an odd number of slashes is a literal quote
if
(!
doExec
(
"-a -b\\\\\\\" -c -d"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"-a -b\\\\\\\" -c -d"
)
;
// A quote preceeded by an even number of slashes is a literal quote
// see 6214916.
if
(!
doExec
(
"-a -b\\\\\\\\\" -c -d"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"-a -b\\\\\\\\\" -c -d"
)
;
// Make sure that whitespace doesn't interfere with the removal of the
// appropriate tokens. (space-tab-space preceeds -jre-restict-search).
if
(!
doExec
(
"-a -b \t -jre-restrict-search -c -d"
,
"-a -b -c -d"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"-a -b \t -jre-restrict-search -c -d"
,
"-a -b -c -d"
)
;
// Make sure that the mJRE tokens being stripped, aren't stripped if
// they happen to appear as arguments to the main class.
if
(!
doExec
(
"foo -version:1.1+"
))
exitValue
++
;
TestHelper
.
testExitValue
+=
doTest
(
"foo -version:1.1+"
)
;
System
.
out
.
println
(
"Completed
Arrrghs arguments quoting/matching tests with "
+
exitValue
+
" errors"
);
System
.
exit
(
exitValue
);
System
.
out
.
println
(
"Completed
arguments quoting tests with "
+
TestHelper
.
testExitValue
+
" errors"
);
}
/*
* These tests are usually run on non-existent targets to check error results
*/
static
void
runBasicErrorMessageTests
()
{
// Tests for 5030233
TestHelper
.
TestResult
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-cp"
);
tr
.
checkNegative
();
tr
.
isNotZeroOutput
();
System
.
out
.
println
(
tr
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-classpath"
);
tr
.
checkNegative
();
tr
.
isNotZeroOutput
();
System
.
out
.
println
(
tr
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-jar"
);
tr
.
checkNegative
();
tr
.
isNotZeroOutput
();
System
.
out
.
println
(
tr
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javacCmd
,
"-cp"
);
tr
.
checkNegative
();
tr
.
isNotZeroOutput
();
System
.
out
.
println
(
tr
);
// Test for 6356475 "REGRESSION:"java -X" from cmdline fails"
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-X"
);
tr
.
checkPositive
();
tr
.
isNotZeroOutput
();
System
.
out
.
println
(
tr
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-help"
);
tr
.
checkPositive
();
tr
.
isNotZeroOutput
();
System
.
out
.
println
(
tr
);
}
/*
* A set of tests which tests various dispositions of the main method.
*/
static
void
runMainMethodTests
()
throws
FileNotFoundException
{
TestHelper
.
TestResult
tr
=
null
;
// a missing class
TestHelper
.
createJar
(
new
File
(
"some.jar"
),
new
File
(
"Foo"
),
(
String
[])
null
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-jar"
,
"some.jar"
);
tr
.
contains
(
"MIA"
);
System
.
out
.
println
(
tr
);
// use classpath to check
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-cp"
,
"some.jar"
,
"MIA"
);
tr
.
contains
(
"Error: Could not find main class MIA"
);
System
.
out
.
println
(
tr
);
// incorrect method access
TestHelper
.
createJar
(
new
File
(
"some.jar"
),
new
File
(
"Foo"
),
"private static void main(String[] args){}"
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-jar"
,
"some.jar"
);
tr
.
contains
(
"Error: Main method not found in class Foo"
);
System
.
out
.
println
(
tr
);
// use classpath to check
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-cp"
,
"some.jar"
,
"Foo"
);
tr
.
contains
(
"Error: Main method not found in class Foo"
);
System
.
out
.
println
(
tr
);
// incorrect return type
TestHelper
.
createJar
(
new
File
(
"some.jar"
),
new
File
(
"Foo"
),
"public static int main(String[] args){return 1;}"
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-jar"
,
"some.jar"
);
tr
.
contains
(
"Error: Main method must return a value of type void in class Foo"
);
System
.
out
.
println
(
tr
);
// use classpath to check
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-cp"
,
"some.jar"
,
"Foo"
);
tr
.
contains
(
"Error: Main method must return a value of type void in class Foo"
);
System
.
out
.
println
(
tr
);
// incorrect parameter type
TestHelper
.
createJar
(
new
File
(
"some.jar"
),
new
File
(
"Foo"
),
"public static void main(Object[] args){}"
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-jar"
,
"some.jar"
);
tr
.
contains
(
"Error: Main method not found in class Foo"
);
System
.
out
.
println
(
tr
);
// use classpath to check
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-cp"
,
"some.jar"
,
"Foo"
);
tr
.
contains
(
"Error: Main method not found in class Foo"
);
System
.
out
.
println
(
tr
);
// incorrect method type - non-static
TestHelper
.
createJar
(
new
File
(
"some.jar"
),
new
File
(
"Foo"
),
"public void main(Object[] args){}"
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-jar"
,
"some.jar"
);
tr
.
contains
(
"Error: Main method not found in class Foo"
);
System
.
out
.
println
(
tr
);
// use classpath to check
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-cp"
,
"some.jar"
,
"Foo"
);
tr
.
contains
(
"Error: Main method not found in class Foo"
);
System
.
out
.
println
(
tr
);
// amongst a potpourri of kindred main methods, is the right one chosen ?
TestHelper
.
createJar
(
new
File
(
"some.jar"
),
new
File
(
"Foo"
),
"void main(Object[] args){}"
,
"int main(Float[] args){return 1;}"
,
"private void main() {}"
,
"private static void main(int x) {}"
,
"public int main(int argc, String[] argv) {return 1;}"
,
"public static void main(String[] args) {System.out.println(\"THE_CHOSEN_ONE\");}"
);
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-jar"
,
"some.jar"
);
tr
.
contains
(
"THE_CHOSEN_ONE"
);
System
.
out
.
println
(
tr
);
// use classpath to check
tr
=
TestHelper
.
doExec
(
TestHelper
.
javaCmd
,
"-cp"
,
"some.jar"
,
"Foo"
);
tr
.
contains
(
"THE_CHOSEN_ONE"
);
System
.
out
.
println
(
tr
);
}
/**
* @param args the command line arguments
* @throws java.io.FileNotFoundException
*/
public
static
void
main
(
String
[]
args
)
throws
FileNotFoundException
{
if
(
TestHelper
.
debug
)
System
.
out
.
println
(
"Starting Arrrghs tests"
);
quoteParsingTests
();
runBasicErrorMessageTests
();
runMainMethodTests
();
if
(
TestHelper
.
testExitValue
>
0
)
{
System
.
out
.
println
(
"Total of "
+
TestHelper
.
testExitValue
+
" failed"
);
System
.
exit
(
1
);
}
else
{
System
.
out
.
println
(
"All tests pass"
);
}
}
}
test/tools/launcher/Arrrghs.sh
已删除
100644 → 0
浏览文件 @
966a0241
#!/bin/sh
# @test Arrrghs.sh
# @bug 5030233 6214916 6356475 6571029 6684582
# @build Arrrghs
# @run shell Arrrghs.sh
# @summary Argument parsing validation.
# @author Joseph E. Kowalski
#
# Copyright 2004-2008 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.
#
#
# This test is intended to validate generic argument parsing and
# handling.
#
# Oh yes, since the response to argument parsing errors is often
# a visceral one, the name Arrrghs (pronounced "args") seems rather
# appropriate.
#
# Verify directory context variables are set
if
[
"
${
TESTJAVA
}
"
=
""
]
then
echo
"TESTJAVA not set. Test cannot execute. Failed."
exit
1
fi
if
[
"
${
TESTSRC
}
"
=
""
]
then
echo
"TESTSRC not set. Test cannot execute. Failed."
exit
1
fi
if
[
"
${
TESTCLASSES
}
"
=
""
]
then
echo
"TESTCLASSES not set. Test cannot execute. Failed."
exit
1
fi
#
# Shell routine to test for the proper handling of the cp/classpath
# option is correct (see 5030233). This option is unique in that it
# is the only option to the java command (and friends) which is
# separated from its option argument by a space, rather than an
# equals sign.
#
# Parameters:
# $1 cmd utility name to be tested (java, javac, ...)
# $2 option either the -cp or -classpath option to be
# tested.
#
TestCP
()
{
mess
=
"
`
$TESTJAVA
/bin/
$1
$2
2>&1 1>/dev/null
`
"
if
[
$?
-eq
0
]
;
then
echo
"Invalid
$1
$2
syntax accepted"
exit
1
fi
if
[
-z
"
$mess
"
]
;
then
echo
"No Usage message from invalid
$1
$2
syntax"
exit
1
fi
}
#
# Test for 6356475 "REGRESSION:"java -X" from cmdline fails"
#
TestXUsage
()
{
$TESTJAVA
/bin/java
-X
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo
"-X option failed"
exit
1
fi
}
#
# Test if java -help works
#
TestHelp
()
{
$TESTJAVA
/bin/java
-help
>
/dev/null 2>&1
if
[
$?
-ne
0
]
;
then
echo
"-help option failed"
exit
1
fi
}
#
# Test to ensure that a missing main class is indicated in the error message
#
TestMissingMainClass
()
{
# First create a small jar file with no main
printf
"public class Foo {}
\n
"
>
Foo.java
$TESTJAVA
/bin/javac Foo.java
if
[
$?
-ne
0
]
;
then
printf
"Error: compilation of Foo.java failed
\n
"
exit
1
fi
printf
"Main-Class: Bar
\n
"
>
manifest
$TESTJAVA
/bin/jar
-cvfm
some.jar manifest Foo.class
if
[
!
-f
some.jar
]
;
then
printf
"Error: did not find some.jar
\n
"
exit
1
fi
# test a non-existence main-class using -jar
mess
=
"
`
$TESTJAVA
/bin/java
-jar
some.jar 2>&1 1>/dev/null
`
"
echo
$mess
|
grep
'Bar'
2>&1
>
/dev/null
if
[
$?
-ne
0
]
;
then
printf
"Error: did not find main class missing message
\n
"
exit
1
fi
# test a non-existent main-class using classpath
mess
=
"
`
$TESTJAVA
/bin/java
-cp
some.jar Bar 2>&1 1>/dev/null
`
"
echo
$mess
|
grep
'Bar'
2>&1
>
/dev/null
if
[
$?
-ne
0
]
;
then
printf
"Error: did not find main class missing message
\n
"
exit
1
fi
# cleanup
rm
-f
some.jar Foo.
*
manifest
}
#
# Main processing:
#
#
# Tests for 5030233
#
TestCP java
-cp
TestCP java
-classpath
TestCP java
-jar
TestCP javac
-cp
TestCP javac
-classpath
TestXUsage
TestHelp
TestMissingMainClass
#
# Tests for 6214916
#
#
# These tests require that a JVM (any JVM) be installed in the system registry.
# If none is installed, skip this test.
$TESTJAVA
/bin/java
-version
:1.1+
-version
>
/dev/null 2>&1
if
[
$?
-eq
0
]
;
then
$TESTJAVA
/bin/java
-classpath
$TESTCLASSES
Arrrghs
$TESTJAVA
/bin/java
if
[
$?
-ne
0
]
;
then
echo
"Argument Passing Tests failed"
exit
1
fi
else
printf
"Warning:Argument Passing Tests were skipped, no java found in system registry."
fi
exit
0
test/tools/launcher/TestHelper.java
0 → 100644
浏览文件 @
8e3b4641
/*
* Copyright 2008 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.
*/
import
javax.tools.ToolProvider
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.FileOutputStream
;
import
java.io.InputStreamReader
;
import
java.io.PrintStream
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
javax.tools.JavaCompiler
;
/**
* This class provides some common utilites for the launcher tests.
*/
public
enum
TestHelper
{
INSTANCE
;
static
final
String
JAVAHOME
=
System
.
getProperty
(
"java.home"
,
"."
);
static
final
boolean
isSDK
=
JAVAHOME
.
endsWith
(
"jre"
);
static
final
String
javaCmd
;
static
final
String
javacCmd
;
static
final
JavaCompiler
compiler
;
static
final
boolean
debug
=
Boolean
.
getBoolean
(
"Arrrghs.Debug"
);
static
final
boolean
isWindows
=
System
.
getProperty
(
"os.name"
,
"unknown"
).
startsWith
(
"Windows"
);
static
int
testExitValue
=
0
;
static
{
compiler
=
ToolProvider
.
getSystemJavaCompiler
();
File
binDir
=
(
isSDK
)
?
new
File
((
new
File
(
JAVAHOME
)).
getParentFile
(),
"bin"
)
:
new
File
(
JAVAHOME
,
"bin"
);
File
javaCmdFile
=
(
isWindows
)
?
new
File
(
binDir
,
"java.exe"
)
:
new
File
(
binDir
,
"java"
);
javaCmd
=
javaCmdFile
.
getAbsolutePath
();
if
(!
javaCmdFile
.
canExecute
())
{
throw
new
RuntimeException
(
"java <"
+
TestHelper
.
javaCmd
+
"> must exist"
);
}
File
javacCmdFile
=
(
isWindows
)
?
new
File
(
binDir
,
"javac.exe"
)
:
new
File
(
binDir
,
"javac"
);
javacCmd
=
javacCmdFile
.
getAbsolutePath
();
if
(!
javacCmdFile
.
canExecute
())
{
throw
new
RuntimeException
(
"java <"
+
javacCmd
+
"> must exist"
);
}
}
/*
* A generic jar file creator which creates the java file, compiles it
* and jar's it up for use.
*/
static
void
createJar
(
File
jarName
,
File
mainClass
,
String
...
mainDefs
)
throws
FileNotFoundException
{
createJar
(
null
,
jarName
,
mainClass
,
mainDefs
);
}
/*
* A method which takes manifest entry to specify a specific manifest
* Main-Class name.
*/
static
void
createJar
(
String
mEntry
,
File
jarName
,
File
mainClass
,
String
...
mainDefs
)
throws
FileNotFoundException
{
if
(
jarName
.
exists
())
{
jarName
.
delete
();
}
PrintStream
ps
=
new
PrintStream
(
new
FileOutputStream
(
mainClass
+
".java"
));
ps
.
println
(
"public class Foo {"
);
if
(
mainDefs
!=
null
)
{
for
(
String
x
:
mainDefs
)
{
ps
.
println
(
x
);
}
}
ps
.
println
(
"}"
);
ps
.
close
();
String
compileArgs
[]
=
{
mainClass
+
".java"
};
if
(
compiler
.
run
(
null
,
null
,
null
,
compileArgs
)
!=
0
)
{
throw
new
RuntimeException
(
"compilation failed "
+
mainClass
+
".java"
);
}
if
(
mEntry
==
null
&&
mainDefs
==
null
)
{
mEntry
=
"MIA"
;
}
else
{
mEntry
=
mainClass
.
getName
();
}
String
jarArgs
[]
=
{
(
debug
)
?
"cvfe"
:
"cfe"
,
jarName
.
getAbsolutePath
(),
mEntry
,
mainClass
.
getName
()
+
".class"
};
sun
.
tools
.
jar
.
Main
jarTool
=
new
sun
.
tools
.
jar
.
Main
(
System
.
out
,
System
.
err
,
"JarCreator"
);
if
(!
jarTool
.
run
(
jarArgs
))
{
throw
new
RuntimeException
(
"jar creation failed "
+
jarName
);
}
}
/*
* A method which executes a java cmd and returs the results in a container
*/
static
TestResult
doExec
(
String
...
cmds
)
{
String
cmdStr
=
""
;
for
(
String
x
:
cmds
)
{
cmdStr
=
cmdStr
.
concat
(
x
+
" "
);
}
ProcessBuilder
pb
=
new
ProcessBuilder
(
cmds
);
Map
<
String
,
String
>
env
=
pb
.
environment
();
BufferedReader
rdr
=
null
;
try
{
List
<
String
>
outputList
=
new
ArrayList
<
String
>();
pb
.
redirectErrorStream
(
true
);
Process
p
=
pb
.
start
();
rdr
=
new
BufferedReader
(
new
InputStreamReader
(
p
.
getInputStream
()));
String
in
=
rdr
.
readLine
();
while
(
in
!=
null
)
{
outputList
.
add
(
in
);
in
=
rdr
.
readLine
();
}
p
.
waitFor
();
p
.
destroy
();
return
new
TestHelper
.
TestResult
(
cmdStr
,
p
.
exitValue
(),
outputList
);
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
throw
new
RuntimeException
(
ex
.
getMessage
());
}
}
/*
* A class to encapsulate the test results and stuff, with some ease
* of use methods to check the test results.
*/
static
class
TestResult
{
StringBuilder
status
;
int
exitValue
;
List
<
String
>
testOutput
;
public
TestResult
(
String
str
,
int
rv
,
List
<
String
>
oList
)
{
status
=
new
StringBuilder
(
str
);
exitValue
=
rv
;
testOutput
=
oList
;
}
void
checkNegative
()
{
if
(
exitValue
==
0
)
{
status
=
status
.
append
(
" Error: test must not return 0 exit value"
);
testExitValue
++;
}
}
void
checkPositive
()
{
if
(
exitValue
!=
0
)
{
status
=
status
.
append
(
" Error: test did not return 0 exit value"
);
testExitValue
++;
}
}
boolean
isOK
()
{
return
exitValue
==
0
;
}
boolean
isZeroOutput
()
{
if
(!
testOutput
.
isEmpty
())
{
status
=
status
.
append
(
" Error: No message from cmd please"
);
testExitValue
++;
return
false
;
}
return
true
;
}
boolean
isNotZeroOutput
()
{
if
(
testOutput
.
isEmpty
())
{
status
=
status
.
append
(
" Error: Missing message"
);
testExitValue
++;
return
false
;
}
return
true
;
}
public
String
toString
()
{
if
(
debug
)
{
for
(
String
x
:
testOutput
)
{
status
=
status
.
append
(
x
+
"\n"
);
}
}
return
status
.
toString
();
}
boolean
contains
(
String
str
)
{
for
(
String
x
:
testOutput
)
{
if
(
x
.
contains
(
str
))
{
return
true
;
}
}
status
=
status
.
append
(
" Error: string <"
+
str
+
"> not found "
);
testExitValue
++;
return
false
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录