📄 system.java
字号:
security.checkPropertyAccess(key); } /* Check for the property provider first */ PropertyProvider provider = DynamicProperties.get(key); if (provider != null) { String value = provider.getValue(key, false); if (value == null) { return def; } return value; } return props.getProperty(key, def); } /** * Sets the system property indicated by the specified key. * <p> * First, if a security manager exists, its * <code>SecurityManager.checkPermission</code> method * is called with a <code>PropertyPermission(key, "write")</code> * permission. This may result in a SecurityException being thrown. * If no exception is thrown, the specified property is set to the given * value. * <p> * * @param key the name of the system property. * @param value the value of the system property. * @return the previous value of the system property, * or <code>null</code> if it did not have one. * * @exception SecurityException if a security manager exists and its * <code>checkPermission</code> method doesn't allow * setting of the specified property. * @exception NullPointerException if <code>key</code> is * <code>null</code>. * @exception IllegalArgumentException if <code>key</code> is empty. * @see #getProperty * @see java.lang.System#getProperty(java.lang.String) * @see java.lang.System#getProperty(java.lang.String, java.lang.String) * @see java.util.PropertyPermission * @see SecurityManager#checkPermission * @since 1.2 */ public static String setProperty(String key, String value) { if (key == null) { throw new NullPointerException("key can't be null"); } if (key.equals("")) { throw new IllegalArgumentException("key can't be empty"); } if (security != null) security.checkPermission(new PropertyPermission(key, SecurityConstants.PROPERTY_WRITE_ACTION)); /* Need to set the property in 'midpProps' to allow * midlets to see properties set by the -D command line * arugments. */ midpProps.setProperty(key, value); return (String) props.setProperty(key, value); } /** * Gets an environment variable. An environment variable is a * system-dependent external variable that has a string value. * * deprecated The preferred way to extract system-dependent information * is the system properties of the * <code>java.lang.System.getProperty</code> methods and the * corresponding <code>get</code><em>TypeName</em> methods of * the <code>Boolean</code>, <code>Integer</code>, and * <code>Long</code> primitive types. For example: * <blockquote><pre> * String classPath = System.getProperty("java.class.path","."); * <br> * if (Boolean.getBoolean("myapp.exper.mode")) * enableExpertCommands(); * </pre></blockquote> * * param name of the environment variable * return the value of the variable, or <code>null</code> if the variable * is not defined. * see java.lang.Boolean#getBoolean(java.lang.String) * see java.lang.Integer#getInteger(java.lang.String) * see java.lang.Integer#getInteger(java.lang.String, int) * see java.lang.Integer#getInteger(java.lang.String, java.lang.Integer) * see java.lang.Long#getLong(java.lang.String) * see java.lang.Long#getLong(java.lang.String, long) * see java.lang.Long#getLong(java.lang.String, java.lang.Long) * see java.lang.System#getProperties() * see java.lang.System#getProperty(java.lang.String) * see java.lang.System#getProperty(java.lang.String, java.lang.String) * public static String getenv(String name) { throw new Error("getenv no longer supported, use properties and -D instead: " + name); } */ /** * Terminates the currently running Java Virtual Machine. The * argument serves as a status code; by convention, a nonzero status * code indicates abnormal termination. * <p> * This method calls the <code>exit</code> method in class * <code>Runtime</code>. This method never returns normally. * <p> * The call <code>System.exit(n)</code> is effectively equivalent to * the call: * <blockquote><pre> * Runtime.getRuntime().exit(n) * </pre></blockquote> * <p> * If process model exists, System.exit() must rely on the process * exiting to release resources. * <p> * If process model does not exist, and a security manager exists, * the security manager by default must prohibit calls to System.exit() * by throwing SecurityException. Otherwise, the system will hang * indefinitely when called, * <p> * @param status exit status. * @throws SecurityException * if a security manager exists and its <code>checkExit</code> * method doesn't allow exit with the specified status. * @see java.lang.Runtime#exit(int) */ public static void exit(int status) { Runtime.getRuntime().exit(status); } /** * Runs the garbage collector. * <p> * Calling the <code>gc</code> method suggests that the Java Virtual * Machine expend effort toward recycling unused objects in order to * make the memory they currently occupy available for quick reuse. * When control returns from the method call, the Java Virtual * Machine has made a best effort to reclaim space from all discarded * objects. * <p> * The call <code>System.gc()</code> is effectively equivalent to the * call: * <blockquote><pre> * Runtime.getRuntime().gc() * </pre></blockquote> * * @see java.lang.Runtime#gc() */ public static void gc() { Runtime.getRuntime().gc(); } /** * Runs the finalization methods of any objects pending finalization. * <p> * Calling this method suggests that the Java Virtual Machine expend * effort toward running the <code>finalize</code> methods of objects * that have been found to be discarded but whose <code>finalize</code> * methods have not yet been run. When control returns from the * method call, the Java Virtual Machine has made a best effort to * complete all outstanding finalizations. * <p> * The call <code>System.runFinalization()</code> is effectively * equivalent to the call: * <blockquote><pre> * Runtime.getRuntime().runFinalization() * </pre></blockquote> * * @see java.lang.Runtime#runFinalization() */ public static void runFinalization() { Runtime.getRuntime().runFinalization(); } /** * Enable or disable finalization on exit; doing so specifies that the * finalizers of all objects that have finalizers that have not yet been * automatically invoked are to be run before the Java runtime exits. * By default, finalization on exit is disabled. * * <p>If there is a security manager, * its <code>checkExit</code> method is first called * with 0 as its argument to ensure the exit is allowed. * This could result in a SecurityException. * * deprecated This method is inherently unsafe. It may result in * finalizers being called on live objects while other threads are * concurrently manipulating those objects, resulting in erratic * behavior or deadlock. * param value indicating enabling or disabling of finalization * throws SecurityException * if a security manager exists and its <code>checkExit</code> * method doesn't allow the exit. * * see java.lang.Runtime#exit(int) * see java.lang.Runtime#gc() * see java.lang.SecurityManager#checkExit(int) * since JDK1.1 * public static void runFinalizersOnExit(boolean value) { Runtime.getRuntime().runFinalizersOnExit(value); } */ /** * Loads a code file with the specified filename from the local file * system as a dynamic library. The filename * argument must be a complete path name. * <p> * The call <code>System.load(name)</code> is effectively equivalent * to the call: * <blockquote><pre> * Runtime.getRuntime().load(name) * </pre></blockquote> * * @param filename the file to load. * @exception SecurityException if a security manager exists and its * <code>checkLink</code> method doesn't allow * loading of the specified dynamic library * @exception UnsatisfiedLinkError if the file does not exist. * @see java.lang.Runtime#load(java.lang.String) * @see java.lang.SecurityManager#checkLink(java.lang.String) */ public static void load(String filename) { Runtime.getRuntime().load0(getCallerClass(), filename); } /** * Loads the system library specified by the <code>libname</code> * argument. The manner in which a library name is mapped to the * actual system library is system dependent. * <p> * The call <code>System.loadLibrary(name)</code> is effectively * equivalent to the call * <blockquote><pre> * Runtime.getRuntime().loadLibrary(name) * </pre></blockquote> * * @param libname the name of the library. * @exception SecurityException if a security manager exists and its * <code>checkLink</code> method doesn't allow * loading of the specified dynamic library * @exception UnsatisfiedLinkError if the library does not exist. * @see java.lang.Runtime#loadLibrary(java.lang.String) * @see java.lang.SecurityManager#checkLink(java.lang.String) */ public static void loadLibrary(String libname) { Runtime.getRuntime().loadLibrary0(getCallerClass(), libname); } /** * Maps a library name into a platform-specific string representing * a native library. * * @param libname the name of the library. * @return a platform-dependent native library name. * @see java.lang.System#loadLibrary(java.lang.String) * @see java.lang.ClassLoader#findLibrary(java.lang.String) * @since 1.2 */ public static native String mapLibraryName(String libname); /** * The following two methods exist because in, out, and err must be * initialized to null. The compiler, however, cannot be permitted to * inline access to them, since they are later set to more sensible values * by initializeSystemClass(). */ private static InputStream nullInputStream() throws NullPointerException { if (currentTimeMillis() > 0) return null; throw new NullPointerException(); } private static PrintStream nullPrintStream() throws NullPointerException { if (currentTimeMillis() > 0) return null; throw new NullPointerException(); } /** * Initialize the system class. Called after thread initialization. */ private static void initializeSystemClass() throws ClassNotFoundException { props = new Properties(); initProperties(props); midpProps = new Properties(); initCldcMidpProperties(midpProps); sun.misc.Version.init(); FileInputStream fdIn = new FileInputStream(FileDescriptor.in); FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out); FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err); setIn0(new BufferedInputStream(fdIn)); setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true)); setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true)); // dynamic properties initialization (should be moved to more // appropriate place when we have dynamic package loading implemented) PackageManager.init(); // Load the zip library now in order to keep java.util.zip.ZipFile // from trying to use itself to load this library later. // CVM statically loads zip //loadLibrary("zip"); // Currently File.deleteOnExit is built on JVM_Exit, which is a // separate mechanism from shutdown hooks. Unfortunately in order to // work properly JVM_Exit implicitly requires that Java signal // handlers be set up for HUP, TERM, and INT (where available). If // File.deleteOnExit were implemented in terms of shutdown hooks this // call to Terminator.setup() could be removed. Terminator.setup(); // Set the maximum amount of direct memory. This value is controlled // by the vm option -XX:MaxDirectMemorySize=<size>. This method acts // as an initializer only if it is called before sun.misc.VM.booted(). // Subsystems that are invoked during initialization can invoke // sun.misc.VM.isBooted() in order to avoid doing things that should // wait until the application class loader has been set up. } /* returns the class of the caller. */ //static Class getCallerClass() { // NOTE use of more generic Reflection.getCallerClass() // return Reflection.getCallerClass(3); //} static native Class getCallerClass();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -