从Zip到互联网Java技术体系连载一

1、本文所使用的环境

  • Java8

  • MacOS

你可以是Windows、Linux环境,只要确保Java已经安装成功并配置好相关环境变量。


2、运行一个Java程序

我们写代码的目的是什么,就是为了实现某个功能,然后让计算机去执行。

我们先写一个简单的程序,创建一个hashmap,然后加入一个元素,然后取出这个元素。

我是将类写在checkjava这个文件夹下面

目录

文件内容:

import java.util.HashMap;
import java.util.Map;

/**
 * @author kbocbre
 * @date Created in 10/24/21 5:31 PM
 * @description
 */
public class HelloWorld {
    public static void main(String[] args) {
        Map<String,String> mapInfo =  new HashMap<>();
        mapInfo.put("科比","24号");
        System.out.println(mapInfo.get("科比"));
    }
}

先用javac命令编译,Java基础内容如果没学过自行找资料学习

javac HelloWorld.java

编译后在当前目录下生成一个**.class**文件

编译后生成.class文件

然后用java命令执行class文件

java HelloWorld

使用Java命令运行class文件

我们可以看到在控制台上打印出了24号,至此我们通过Java完成了一个极其简单的功能,创建一个map,然后加入科比信息,通过可以名字得到可以的号码。

接下来我们分析一下这个java命令背后执行了那些操作加载了那些类, 我们可以用 -verbose参数来打印出JVM加载了那些类。

java -verbose HelloWorld

[Opened /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Object from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.Serializable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Comparable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.CharSequence from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.String from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.AnnotatedElement from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.GenericDeclaration from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Type from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Class from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Cloneable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.System from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Throwable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Error from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ThreadDeath from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Exception from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.RuntimeException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.SecurityManager from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.ProtectionDomain from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.AccessControlContext from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.SecureClassLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ReflectiveOperationException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassNotFoundException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.LinkageError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.NoClassDefFoundError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassCastException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ArrayStoreException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.VirtualMachineError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.OutOfMemoryError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.StackOverflowError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.IllegalMonitorStateException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.Reference from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.SoftReference from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.WeakReference from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.FinalReference from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.PhantomReference from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Cleaner from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.Finalizer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.ReferenceQueue from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Runnable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Thread from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Thread$UncaughtExceptionHandler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ThreadGroup from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Map from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Dictionary from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Hashtable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Properties from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.AccessibleObject from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Member from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Field from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Parameter from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Executable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Method from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Constructor from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.MagicAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.MethodAccessor from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.MethodAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.ConstructorAccessor from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.ConstructorAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.DelegatingClassLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.ConstantPool from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.FieldAccessor from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.FieldAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.UnsafeFieldAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.UnsafeStaticFieldAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.annotation.Annotation from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.CallerSensitive from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandle from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.DirectMethodHandle from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MemberName from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleNatives from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.LambdaForm from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodType from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.BootstrapMethodError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.CallSite from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.ConstantCallSite from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MutableCallSite from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.VolatileCallSite from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Appendable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.AbstractStringBuilder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.StringBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.StringBuilder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Unsafe from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.AutoCloseable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.Closeable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.InputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.ByteArrayInputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.File from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.URLClassLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.URL from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.jar.Manifest from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Launcher from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Launcher$AppClassLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Launcher$ExtClassLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.CodeSource from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.StackTraceElement from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.Buffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Boolean from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Character from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Number from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Float from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Double from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Byte from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Short from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Integer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Long from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.NullPointerException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ArithmeticException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.ObjectStreamField from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Comparator from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.String$CaseInsensitiveComparator from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.Guard from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.Permission from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.BasicPermission from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.RuntimePermission from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.AccessController from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.ReflectPermission from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.PrivilegedAction from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.ReflectionFactory$GetReflectionFactoryAction from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.cert.Certificate from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Iterable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.List from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.RandomAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.AbstractCollection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.AbstractList from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Vector from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Stack from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.ReflectionFactory from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.Reference$Lock from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.Reference$ReferenceHandler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.InterruptedException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.ArrayList from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Set from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.AbstractSet from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$EmptySet from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$EmptyList from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.AbstractMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$EmptyMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$UnmodifiableCollection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$UnmodifiableList from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$UnmodifiableRandomAccessList from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.ReferenceQueue$Null from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.ReferenceQueue$Lock from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaLangRefAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.Reference$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.SharedSecrets from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.IncompatibleClassChangeError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.NoSuchMethodError from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.Reflection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.HashMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Map$Entry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.HashMap$Node from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.VM from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Hashtable$Entry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Math from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ref.Finalizer$FinalizerThread from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.Charset from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.spi.CharsetProvider from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.FastCharsetProvider from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.StandardCharsets from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.util.PreHashedMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.StandardCharsets$Aliases from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.StandardCharsets$Classes from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.StandardCharsets$Cache from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ThreadLocal from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.atomic.AtomicInteger from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Class$3 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Class$ReflectionData from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Class$Atomic from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.generics.repository.AbstractRepository from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.generics.repository.GenericDeclRepository from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.generics.repository.ClassRepository from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Class$AnnotationData from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.annotation.AnnotationType from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.WeakHashMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassValue$ClassValueMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Modifier from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.LangReflectAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.ReflectAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Arrays from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.HistoricallyNamedCharset from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.Unicode from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.UTF_8 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Class$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.ReflectionFactory$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.NativeConstructorAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.DelegatingConstructorAccessorImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.StringCoding from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ThreadLocal$ThreadLocalMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ThreadLocal$ThreadLocalMap$Entry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.StringCoding$StringDecoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.ArrayDecoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.CharsetDecoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.UTF_8$Decoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.CodingErrorAction from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Hashtable$EntrySet from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$SynchronizedCollection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$SynchronizedSet from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Objects from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Enumeration from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Iterator from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Hashtable$Enumerator from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Runtime from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Version from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileInputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileDescriptor from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaIOFileDescriptorAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileDescriptor$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.Flushable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.OutputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileOutputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FilterInputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.BufferedInputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.PrivilegedExceptionAction from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.reflect.misc.ReflectUtil from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FilterOutputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.PrintStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.BufferedOutputStream from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.Writer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.OutputStreamWriter from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.StreamEncoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.security.action.GetPropertyAction from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.ArrayEncoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.CharsetEncoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.UTF_8$Encoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.ByteBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.HeapByteBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.Bits from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.ByteOrder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.atomic.AtomicLong from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaNioAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.Bits$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.BufferedWriter from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.DefaultFileSystem from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileSystem from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.UnixFileSystem from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.ExpiringCache from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.LinkedHashMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.ExpiringCache$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Enum from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.File$PathStatus from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.file.Watchable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.file.Path from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.StringCoding$StringEncoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassLoader$3 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.ExpiringCache$Entry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.LinkedHashMap$Entry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassLoader$NativeLibrary from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Terminator from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.SignalHandler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Terminator$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Signal from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.NativeSignalHandler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Integer$IntegerCache from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.OSEnvironment from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaLangAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.System$2 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.IllegalArgumentException from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Compiler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Compiler$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.URLStreamHandlerFactory from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Launcher$Factory from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.security.util.Debug from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassLoader$ParallelLoaders from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.WeakHashMap$Entry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Collections$SetFromMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.WeakHashMap$KeySet from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaNetAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.URLClassLoader$7 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Launcher$ExtClassLoader$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.StringTokenizer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.MetaIndex from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Readable from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.Reader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.BufferedReader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.InputStreamReader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileReader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.cs.StreamDecoder from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.CharBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.HeapCharBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.CoderResult from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.CoderResult$Cache from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.CoderResult$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.charset.CoderResult$2 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.reflect.Array from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.HashMap$TreeNode from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileInputStream$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.net.www.ParseUtil from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.BitSet from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Locale from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.util.locale.LocaleObjectCache from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Locale$Cache from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.locks.Lock from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.locks.ReentrantLock from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap$Segment from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap$Node from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap$CounterCell from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap$CollectionView from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap$KeySetView from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap$ValuesView from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.ConcurrentHashMap$EntrySetView from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.util.locale.BaseLocale from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.util.locale.BaseLocale$Cache from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.util.locale.BaseLocale$Key from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.util.locale.LocaleObjectCache$CacheEntry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.Locale$LocaleKey from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.util.locale.LocaleUtils from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.CharacterData from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.CharacterDataLatin1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.Parts from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.URLStreamHandler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.net.www.protocol.file.Handler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaSecurityAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.ProtectionDomain$JavaSecurityAccessImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaSecurityProtectionDomainAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.ProtectionDomain$2 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.ProtectionDomain$Key from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.Principal from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.HashSet from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.URLClassPath from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.net.www.protocol.jar.Handler from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Launcher$AppClassLoader$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.SystemClassLoaderAction from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleImpl from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleImpl$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.function.Function from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleImpl$2 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleImpl$3 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassValue from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleImpl$4 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassValue$Entry from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassValue$Identity from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.ClassValue$Version from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MemberName$Factory from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleStatics from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.invoke.MethodHandleStatics$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.PostVMInitHook from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.PostVMInitHook$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.usagetracker.UsageTrackerClient from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.concurrent.atomic.AtomicBoolean from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.usagetracker.UsageTrackerClient$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.usagetracker.UsageTrackerClient$4 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.usagetracker.UsageTrackerClient$3 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FileOutputStream$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.launcher.LauncherHelper from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.URLClassLoader$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.net.util.URLUtil from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.URLClassPath$3 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.URLClassPath$Loader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.URLClassPath$JarLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.zip.ZipConstants from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.zip.ZipFile from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.JavaUtilZipFileAccess from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.util.zip.ZipFile$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.URLClassPath$FileLoader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Resource from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.URLClassPath$FileLoader$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.ByteBuffered from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.PerfCounter from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Perf$GetPerfAction from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.Perf from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.misc.PerfCounter$CoreCounters from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.nio.ch.DirectBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.MappedByteBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.DirectByteBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.LongBuffer from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.nio.DirectLongBufferU from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.PermissionCollection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.Permissions from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.net.URLConnection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.net.www.URLConnection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.net.www.protocol.file.FileURLConnection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded sun.net.www.MessageHeader from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FilePermission from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FilePermission$1 from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.io.FilePermissionCollection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.AllPermission from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.UnresolvedPermission from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.security.BasicPermissionCollection from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded HelloWorld from file:/Users/slf/checkjava/][Loaded sun.launcher.LauncherHelper$FXHelper from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Class$MethodArray from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Void from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar]24[Loaded java.lang.Shutdown from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar][Loaded java.lang.Shutdown$Lock from /Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar]

从上面打印出来的内容我们可以看到主要加载了jre/lib/rt.jar包下面的内容,可以这个路径我们并没有在命令中显示设置,为什么我们在执行这个命令的时候,程序会自动找到这个对应的目录并加载这些相关的jdk中的类,rt.jar这个包里主要就是JDK的一些编译好的类,像我们代码中用到的java.util.HashMap就是在这个包中,至于上面加载了那么多类,主要是一下启动JVM环境的相关类以及使用到的JDK的类和我们自己编写的类,下面我们来介绍一下JVM的类加载过程,我们现在只是要弄清楚如果我们要运行一个Java程序要做那些准备工作,至于JVM的详细信息我们这里先不做了解。

  • 引导类加载器(bootstrap class loader)

用来加载Java的核心类库(JAVA_HOME/jre/lib/rt.jar或sun.boot.class.path路径下的内容)

还用来加载扩展类和应用程序类加载器,并指定他们的父类加载器

引导类加载器是由原生代码一般是C或C++实现的

  • 扩展类加载器(extensions class loader)

用来加载Java的扩展库(JAVA_HOME/jre/ext/*.jar或java.ext.dirs路径下的内容)

这个扩展库是虚拟机提供的,这个加载器会加载这个库里的Java类

扩展类加载器是由sun.misc.Launcher$ExtClassLoader实现

  • 应用程序类加载器(application class loader)

根据Java应用的类路径(classpath),就是我们自己写的java类,就是 java -cp 后面配置的路径,如果没有使用-cp,默认使用环境变量中的classpath变量配置的路径,如果环境变量没有配,在jdk1.5以后默认使用当前目录作为路径查询

  • 自定义类加载器

开发人员通过继承java.lang.ClassLoader类的方式实现自己的类加载器,以满足一些特殊的需求

上面介绍了JVM的四种类加载器,并且JVM在加载一个类时,会从上而下使用类加载器加载,也就是说现在有一个类要加载,那么先会使用引导类加载器加载,如果引导类加载器不加载,接着会使用扩展类加载器进行加载,直至找到合适的类加载器进行加载。这种机制叫双亲委派机制。

说回我们自己的程序,我们在类中使用java.util.Map这个JDK提供的类,按照上面的类加载器知识,JVM是使用引导类加载器加载的

具体的路径是JAVA_HOME/jre/lib/rt.jar,我们自己写的HelloWorld类是由应用程序类加载器加载的。这个JAVA_HOME我在1.8版本测试过,其实你只需要将jdk安装目录的bin目录添加到当前环境的PATH变量中即可,当执行java 命令的时候会自动定位到rt.jar包的位置。

3、Java中的压缩文件格式jar

jar的全称为java Archive File(java归档文件),是一种文件压缩格式。沿用的是Zip压缩算法的压缩方式,但是jar包默认包含了一个META-INF/MANIFEST.MF的清单文件,为什么要搞一个jar包呢,因为我们真正要开发一个软件不可能像上面那样只有一个文件,一般是多目录多文件共同构成,为了方便管理这些文件,Java使用命令将多目录文件全部打包进一个Jar包,简洁明了,方便管理。Jar包可以给其他Java工程引用,引用者只需要将jar包加到classpath下即可,JVM会自动解压Jar包找到对应的要使用的类。jar这个工具是随着JDK一起安装的和Java Javac命令都在bin目录下,可以直接使用。Jar还可以在MANIFEST.MF文件中设置一个Main-Class属性,指定一个含有main方法的启动类,然后以Java -jar的命令可以直接启动这个Jar程序。

下面我们来看看多个类存在依赖关系时,直接编译后运行和使用Jar包方式启动运行。

目录结构及对应的文件

目录结构

out为存放编译后的class文件目录

A和B文件的内容为:

package a;import b.B;/** * @author kbocbre * @date Created in 10/24/21 8:00 PM * @description */public class A {    private String address;    private String phoneNumber;    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    public String getPhoneNumber() {        return phoneNumber;    }    public void setPhoneNumber(String phoneNumber) {        this.phoneNumber = phoneNumber;    }    public static void main(String[] args) {        B b = new B();        b.setUserName("亚里士多德");        b.setAge(25);        System.out.println("姓名:"+b.getUserName() +" 年龄:"+b.getAge());    }}package b;/** * @author kbocbre * @date Created in 10/24/21 8:00 PM * @description */public class B {    private String userName;    private Integer age;    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}

执行多文件编译命令 javac -d out a/*.java b/*.java

编译完后的目录树:

编译完成后的目录树

切换到out目录下,使用java命令启动A中main方法

java a/A

java a/A

可以看到成功运行

接下来我们使用jar方式运行

由于默认生成的jar包中MANIFEST.MF文件中是不包含Main-Class,我们要写一个自定义的MANIFEST.MF文件中设置Main-Class属性然后在打jar包时将这个属性追加到jar中的MANIFEST.MF文件中。自定义的MANIFEST.MF文件如下,就定义了一个Main-Class属性。

自定义添加Main-Class属性的manifest.mf文件

注意要在末尾加一个空行。

我们使用前面编译好的class文件进行打包,命令如下。

多包打jar包命令

上面的命令表示将当前out目录下所有文件打进jar包,manifest.mf表示想生成的jarMANIFEST.MF文件中追加我们自定义的内容,也就是上面的Main-Class: a.A。

打完jar包后的目录结构

我们执行java -jar test.jar 命令

java -jar test.jar

可以看到和前面的直接java命令执行的结果一样。

然后我们来解压一下test.jar文件看看MANIFEST.MF文件的内容。我们直接使用zip的解压命令,因为我发现使用jar的解压命令MANIFEST文件会显示不出来,jar文件本质就是zip。所以我们用如下解压命令进行解压。

unzip -d jarsrc test.jar表示将test.jar解压到jarsrc这个文件夹中

解压jar包

MANIFEST.MF文件内容为:

添加Main-Class属性后的MANIFEST.MF文件内容

可以看到我们追加的Main-Class属性已经加到了MANIFEST.MF文件中。

4、总结

这一篇主要总结了Java中程序启动的类加载过程,主要记住两点,JDK中的核心类库由引导类类加载器负责加载,我们自己编写的要指定classpath可以在环境变量中添加,在JDK1.5以后默认当前目录为classpath的查询路径,如果你的类都写在当前路径下,你也可以不用在classpath中添加。除了java命令可以启动程序,我们还可以使用java -jar的方式启动jar包 ,不过要事先在MANIFEST.MF文件中定义好Main-Class的路径。还有一个注意的点当使用jar包方式启动程序后,classpath就固定为jar包里面的路径,所有的类都在jar包中查找

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值