{"id":264212,"date":"2015-08-25T11:32:02","date_gmt":"2015-08-25T07:32:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=264212"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=264212","title":{"rendered":"\u0417\u0440\u0438 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c: java.lang.Object"},"content":{"rendered":"<p>     \t\u0412 Java \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043b\u0435\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441 java.lang.Object. \u041b\u0435\u0436\u0438\u0442 \u0438 \u043b\u0435\u0436\u0438\u0442, \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0438\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f.<br \/>  \u041d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0447\u0430\u0441\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u043a\u0430\u043a\u0438\u0435 \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043a\u0430\u043a-\u0442\u043e \u0441\u0430\u043c\u0438 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0443\u0447\u0438\u043b\u0438\u0441\u044c. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 Java \u043a\u043b\u0430\u0441\u0441 java.lang.Object. \u041e\u043d \u0436\u0435 \u0432\u0435\u0434\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u043e\u043d \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0448\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u0430\u043a \u0441\u0430\u043c\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0435\u0441\u0442\u044c \u0438 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0442\u0443\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 java\/lang\/Object.java, \u043e\u043f\u0443\u0441\u0442\u0438\u0432 javadoc, \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043f\u0440\u043e\u043b\u0438\u0442\u044c \u0441\u0432\u0435\u0442 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 jvm:<\/p>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<pre><code class=\"java\">package java.lang;  public class Object {      private static native void registerNatives();     static {         registerNatives();     }      public final native Class&lt;?&gt; getClass();      public native int hashCode();      public boolean equals(Object obj) {         return (this == obj);     }      protected native Object clone() throws CloneNotSupportedException;      public String toString() {         return getClass().getName() + &quot;@&quot; + Integer.toHexString(hashCode());     }      public final native void notify();      public final native void notifyAll();      public final native void wait(long timeout) throws InterruptedException;      public final void wait(long timeout, int nanos) throws InterruptedException {         if (timeout &lt; 0) {             throw new IllegalArgumentException(&quot;timeout value is negative&quot;);         }          if (nanos &lt; 0 || nanos &gt; 999999) {             throw new IllegalArgumentException(                                 &quot;nanosecond timeout value out of range&quot;);         }          if (nanos &gt;= 500000 || (nanos != 0 && timeout == 0)) {             timeout++;         }          wait(timeout);     }      public final void wait() throws InterruptedException {         wait(0);     }      protected void finalize() throws Throwable { } } <\/code><\/pre>\n<p>  \u0427\u0442\u043e \u0431\u044b \u044f \u0445\u043e\u0442\u0435\u043b \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043a\u043e\u0434\u0435? <\/p>\n<p>  \u0412\u0441\u0435\u0433\u043e \u0432 Object 11 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, 5 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0438 6 \u0441 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0445 \u043a\u043e\u0434 \u0443\u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.<\/p>\n<p>  \u041f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 \u0432\u0441\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a. \u041c\u043d\u0435, \u043a\u0441\u0442\u0430\u0442\u0438, \u0432 \u0441\u0432\u043e\u0435\u043c \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0430\u0441\u044c \u0448\u0443\u0442\u043a\u0430 \u043f\u0440\u043e \u0442\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0442\u0430\u0442\u044c C++ \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u0432 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u0432 Java \u043d\u0430\u0437\u0432\u0430\u043d\u044b \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438.  <\/p>\n<pre><code class=\"java\">public boolean equals(Object obj) {     return (this == obj); } <\/code><\/pre>\n<p>  toString \u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e, \u043a\u0440\u043e\u043c\u0435 \u0440\u0430\u0437\u0432\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e hashCode() \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443. \u0418 \u0435\u0441\u043b\u0438 \u0431\u044b  <a href=\"http:\/\/habrahabr.ru\/users\/apangin\/\" class=\"user_link\">apangin<\/a> \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b, \u0447\u0442\u043e \u043d\u044b\u043d\u0447\u0435 <a href=\"http:\/\/habrahabr.ru\/post\/165683\/\">\u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c hashCode<\/a>, \u044f \u0431\u044b \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 Java \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0439\u0442\u0438 \u0441\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e hashCode, \u0442.\u043a. \u043e\u043d \u0431\u044b\u043b \u043d\u0435 \u0447\u0435\u043c \u0438\u043d\u044b\u043c \u043a\u0430\u043a \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0422\u0435 32 \u0431\u0438\u0442\u043d\u044b\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u0434\u043b\u044f \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u043e\u0448\u043b\u0438, \u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0436\u0435 \u043d\u0435 \u0437\u043d\u0430\u044e, \u0435\u0441\u0442\u044c \u043b\u0438 \u0441\u043c\u044b\u0441\u043b \u0432 toString() \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c hashCode.<\/p>\n<pre><code class=\"java\">public String toString() {     return getClass().getName() + &quot;@&quot; + Integer.toHexString(hashCode()); } <\/code><\/pre>\n<p>  \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e wait \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0449\u0438\u043c \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c, \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 nanos.<br \/>  \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u043d\u0443 \u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u044d\u0442\u043e \u0437\u0430\u043a\u043b\u0430\u0434\u043a\u0430 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0438\u043b\u0438 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443 wait(long timeout, int nanos) \u0434\u0440\u0443\u0433\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f.<\/p>\n<pre><code class=\"java\">public final void wait(long timeout, int nanos) throws InterruptedException {     if (timeout &lt; 0) {         throw new IllegalArgumentException(&quot;timeout value is negative&quot;);     }      if (nanos &lt; 0 || nanos &gt; 999999) {         throw new IllegalArgumentException(                             &quot;nanosecond timeout value out of range&quot;);     }      if (nanos &gt;= 500000 || (nanos != 0 && timeout == 0)) {         timeout++;     }      wait(timeout); }  public final void wait() throws InterruptedException {     wait(0); } <\/code><\/pre>\n<p>  \u0417\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u043f\u0430\u0440\u0430\u0434 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0432 java.lang.Object:<\/p>\n<pre><code class=\"java\">protected void finalize() throws Throwable { } <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442, \u0438 \u0435\u0441\u0442\u044c \u043a\u0443\u0447\u0430 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f <a href=\"http:\/\/habrahabr.ru\/post\/144544\/\">finalize \u0438 Finalizer<\/a>, <a href=\"http:\/\/habrahabr.ru\/post\/183344\/\">\u0441\u043c\u044b\u0441\u043b finalize<\/a>.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0430 java\/lang\/Object.class \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0447\u0442\u043e \u0432 \u043d\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0443\u043f\u0435\u0440 \u043a\u043b\u0430\u0441\u0441\u0430. \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c jre \u0438\u043b\u0438 jdk rt.jar, \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">jar -xf rt.jar <\/code><\/pre>\n<p>  \u0418 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0432 super class \u0443 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b 00 00, \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0447\u0442\u043e \u0431\u0443\u0434\u0435\u0442, \u0435\u0441\u043b\u0438 \u0440\u0443\u043a\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c class \u0444\u0430\u0439\u043b \u0431\u0435\u0437 \u0441\u0443\u043f\u0435\u0440 \u043a\u043b\u0430\u0441\u0441\u0430.<br \/>  \u042f \u0432\u0437\u044f\u043b Hello.class \u0438\u0437 \u043c\u043e\u0435\u0439 <a href=\"http:\/\/habrahabr.ru\/post\/264919\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0437\u0430\u043c\u0435\u0442\u043a\u0438<\/a>. <br \/>  \u041e\u0442\u043a\u0440\u044b\u043b \u0435\u0433\u043e \u0432 vim \u0438 \u0437\u0430\u043c\u0435\u043d\u0438\u043b \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0431\u0443\u0444\u0435\u0440\u0430 \u043d\u0430 hex \u0434\u0430\u043c\u043f <a href=\"http:\/\/vim.wikia.com\/wiki\/Hex_dump\">vim.wikia.com\/wiki\/Hex_dump<\/a>:<\/p>\n<pre><code class=\"bash\">:%!xxd <\/code><\/pre>\n<p>  \u041f\u043e\u0440\u0430\u0437\u0438\u043b\u0441\u044f \u043c\u043e\u0449\u0438 vim \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430. \u0411\u044b\u0441\u0442\u0440\u0435\u043d\u044c\u043a\u043e \u043d\u0430\u0448\u0435\u043b \u0431\u0430\u0439\u0442\u044b \u0434\u043b\u044f super_class. \u041d\u0430\u043f\u043e\u043c\u043d\u044e, \u043e\u043d\u0438 \u043b\u0435\u0436\u0430\u0442 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/docs.oracle.com\/javase\/specs\/jvms\/se7\/html\/jvms-4.html#jvms-4.1\">\u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438<\/a> \u0447\u0435\u0440\u0435\u0437 4 \u0431\u0430\u0439\u0442\u0430 \u043f\u043e\u0441\u043b\u0435 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f constant_pool. \u041a\u043e\u043d\u0435\u0446 constant_pool \u0438\u0449\u0435\u0442\u0441\u044f \u043f\u043e \u0442\u0435\u0433\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 00 01 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0431\u0430\u0439\u0442\u043e\u0432, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u043d\u0443\u043b\u0438 \u0438\u0434\u0443\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044b constant_pool. \u0414\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 class \u0444\u0430\u0439\u043b\u043e\u0432 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0435 \u0442\u0430\u043a, \u043d\u043e \u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e.<br \/>  \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043a \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0443:  <\/p>\n<pre><code class=\"bash\">:%!xxd -r <\/code><\/pre>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f.<br \/>  \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043d\u0430\u0448\u0435 \u043f\u043e\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"bash\">java -cp classes\/ hello.App  Error: A JNI error has occurred, please check your installation and try again Exception in thread &quot;main&quot; java.lang.ClassFormatError: Invalid superclass index 0 in class file hello\/App     at java.lang.ClassLoader.defineClass1(Native Method)     at java.lang.ClassLoader.defineClass(ClassLoader.java:760)     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)     at java.net.URLClassLoader.access$100(URLClassLoader.java:73)     at java.net.URLClassLoader$1.run(URLClassLoader.java:368)     at java.net.URLClassLoader$1.run(URLClassLoader.java:362)     at java.security.AccessController.doPrivileged(Native Method)     at java.net.URLClassLoader.findClass(URLClassLoader.java:361)     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495) <\/code><\/pre>\n<p>  \u041e\u0448\u0438\u0431\u043a\u0430, \u0434\u0430 \u0435\u0449\u0435 \u043d\u0435 \u043a\u0430\u043a\u0430\u044f-\u043d\u0438\u0431\u0443\u0434\u044c, \u0430 \u0432\u044b\u0431\u0440\u043e\u0448\u0435\u043d\u043d\u0430\u044f \u0438\u0437 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432. \u041f\u043e\u0439\u0434\u0435\u043c \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u0437\u0430 \u043e\u0434\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0439\u043c\u0435\u043c \u043a\u0430\u043a \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043e\u0448\u0438\u0431\u043a\u0438.<\/p>\n<p>  \u041d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 jdk. \u042f \u0432\u044b\u0431\u0440\u0430\u043b OpenJDK \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f. \u0411\u0443\u0434\u0435\u043c \u043a\u0430\u0447\u0430\u0442\u044c \u0438\u0445 \u043e\u0442\u0441\u044e\u0434\u0430:<\/p>\n<p>  <b><a href=\"http:\/\/hg.openjdk.java.net\/jdk8\/jdk8\/\">hg.openjdk.java.net\/jdk8\/jdk8<\/a><\/b><\/p>\n<p>  \u0418\u0445 \u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 \u041c\u0435\u0440\u043a\u0443\u0440\u0438\u0438:<\/p>\n<p>  <b>hg clone <a href=\"http:\/\/hg.openjdk.java.net\/jdk8\/jdk8\/\">hg.openjdk.java.net\/jdk8\/jdk8<\/a><\/b><\/p>\n<p>  \u041d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u043d\u0435 \u0432\u0441\u0451.<br \/>  \u041d\u0430\u0434\u043e \u0435\u0449\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c:<\/p>\n<pre><code class=\"bash\">.\/get_source.sh <\/code><\/pre>\n<p>  \u0418 \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c. \u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 \u0441\u043a\u0430\u0447\u0430\u043b\u0438\u0441\u044c \u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0430\u0448\u0443 \u043e\u0448\u0438\u0431\u043a\u0443. \u042f \u0434\u0435\u043b\u0430\u044e \u044d\u0442\u043e grep-\u043e\u043c:<\/p>\n<pre><code class=\"bash\">grep -nr 'Invalid superclass index' *  hotspot\/src\/share\/vm\/classfile\/classFileParser.cpp:3095:                   &quot;Invalid superclass index %u in class file %s&quot;, hotspot\/src\/share\/vm\/classfile\/classFileParser.cpp:3100:                   &quot;Invalid superclass index %u in class file %s&quot;, <\/code><\/pre>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c classFileParser.cpp \u0438 \u0442\u0430\u043c \u043d\u0430 3095 \u0441\u0442\u0440\u043e\u0447\u043a\u0435:<\/p>\n<pre><code>instanceKlassHandle ClassFileParser::parse_super_class(int super_class_index,                                                        TRAPS) {   instanceKlassHandle super_klass;   if (super_class_index == 0) {     check_property(_class_name == vmSymbols::java_lang_Object(),                    &quot;Invalid superclass index %u in class file %s&quot;,                    super_class_index,                    CHECK_NULL);   } else {     check_property(valid_klass_reference_at(super_class_index),                    &quot;Invalid superclass index %u in class file %s&quot;,                    super_class_index,                    CHECK_NULL);     \/\/ The class name should be legal because it is checked when parsing constant pool.     \/\/ However, make sure it is not an array type.     bool is_array = false;     if (_cp-&gt;tag_at(super_class_index).is_klass()) {       super_klass = instanceKlassHandle(THREAD, _cp-&gt;resolved_klass_at(super_class_index));       if (_need_verify)         is_array = super_klass-&gt;oop_is_array();     } else if (_need_verify) {       is_array = (_cp-&gt;unresolved_klass_at(super_class_index)-&gt;byte_at(0) == JVM_SIGNATURE_ARRAY);     }     if (_need_verify) {       guarantee_property(!is_array,                         &quot;Bad superclass name in class file %s&quot;, CHECK_NULL);     }   }   return super_klass; } <\/code><\/pre>\n<p>  \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0432\u043e\u0442 \u044d\u0442\u0430 \u0447\u0430\u0441\u0442\u044c: <\/p>\n<pre><code>if (super_class_index == 0) {   check_property(_class_name == vmSymbols::java_lang_Object(),                  &quot;Invalid superclass index %u in class file %s&quot;,                  super_class_index,                  CHECK_NULL); } <\/code><\/pre>\n<p>  check_property \u043b\u0435\u0436\u0438\u0442 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u0447\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 classFileParser.hpp \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code>inline void check_property(bool property, const char* msg, int index, TRAPS) {   if (_need_verify) {     guarantee_property(property, msg, index, CHECK);   } else {     assert_property(property, msg, index, CHECK);   } } <\/code><\/pre>\n<p>  \u042f \u0441\u0442\u0430\u043b \u0438\u0441\u043a\u0430\u0442\u044c \u0433\u0434\u0435 \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f _need_verify \u0438 \u0437\u0430 \u0447\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442. \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0432 classFileParser.cpp \u0435\u0441\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0430\u044f \u0441\u0442\u0440\u043e\u0447\u043a\u0430:<\/p>\n<pre><code>_need_verify = Verifier::should_verify_for(class_loader(), verify); <\/code><\/pre>\n<p>  verify \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435:<\/p>\n<pre><code>instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name,                                                     ClassLoaderData* loader_data,                                                     Handle protection_domain,                                                     KlassHandle host_klass,                                                     GrowableArray&lt;Handle&gt;* cp_patches,                                                     TempNewSymbol& parsed_name,                                                     bool verify,                                                     TRAPS) <\/code><\/pre>\n<p>  \u042d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043d\u043e \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0432 hotspot\/src\/share\/vm\/classfile\/classLoader.cpp:<\/p>\n<pre><code>instanceKlassHandle result = parser.parseClassFile(h_name,                                                    loader_data,                                                    protection_domain,                                                    parsed_name,                                                    false,                                                    CHECK_(h)); <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0436\u0435 \u0443\u0441\u0442\u0440\u043e\u0435\u043d should_verify_for \u0432 hotspot\/src\/share\/vm\/classfile\/verifier.cpp:<\/p>\n<pre><code>bool Verifier::should_verify_for(oop class_loader, bool should_verify_class) {   return (class_loader == NULL || !should_verify_class) ?     BytecodeVerificationLocal : BytecodeVerificationRemote; } <\/code><\/pre>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0432 should_verify_class \u043c\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u043c false, \u0441\u043c\u043e\u0442\u0440\u0438\u043c BytecodeVerificationLocal \u0432 hotspot\/src\/share\/vm\/runtime\/arguments.cpp:<\/p>\n<pre><code>\/\/ -Xverify     } else if (match_option(option, &quot;-Xverify&quot;, &tail)) {       if (strcmp(tail, &quot;:all&quot;) == 0 || strcmp(tail, &quot;&quot;) == 0) {         FLAG_SET_CMDLINE(bool, BytecodeVerificationLocal, true);         FLAG_SET_CMDLINE(bool, BytecodeVerificationRemote, true);       } else if (strcmp(tail, &quot;:remote&quot;) == 0) {         FLAG_SET_CMDLINE(bool, BytecodeVerificationLocal, false);         FLAG_SET_CMDLINE(bool, BytecodeVerificationRemote, true);       } else if (strcmp(tail, &quot;:none&quot;) == 0) {         FLAG_SET_CMDLINE(bool, BytecodeVerificationLocal, false);         FLAG_SET_CMDLINE(bool, BytecodeVerificationRemote, false);       } else if (is_bad_option(option, args-&gt;ignoreUnrecognized, &quot;verification&quot;)) {         return JNI_EINVAL;       }     \/\/ -Xdebug     } <\/code><\/pre>\n<p>  \u0417\u0430\u0440\u044b\u0432\u0430\u044f\u0441\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0447\u0435\u0440\u043d\u0443\u044e \u043c\u0430\u0433\u0438\u044e \u0441 \u043c\u0430\u043a\u0440\u043e\u0441\u0430\u043c\u0438 \u0432 hotspot\/src\/share\/vm\/runtime\/globals_extension.hpp:<\/p>\n<pre><code>#define FLAG_SET_CMDLINE(type, name, value) (CommandLineFlagsEx::type##AtPut(FLAG_MEMBER_WITH_TYPE(name,type), (type)(value), Flag::COMMAND_LINE))  class CommandLineFlagsEx : CommandLineFlags {  public:   static void boolAtPut(CommandLineFlagWithType flag, bool value, Flag::Flags origin);   static void intxAtPut(CommandLineFlagWithType flag, intx value, Flag::Flags origin);   static void uintxAtPut(CommandLineFlagWithType flag, uintx value, Flag::Flags origin);   static void uint64_tAtPut(CommandLineFlagWithType flag, uint64_t value, Flag::Flags origin);   static void doubleAtPut(CommandLineFlagWithType flag, double value, Flag::Flags origin);   static void ccstrAtPut(CommandLineFlagWithType flag, ccstr value, Flag::Flags origin);    static bool is_default(CommandLineFlag flag);   static bool is_ergo(CommandLineFlag flag);   static bool is_cmdline(CommandLineFlag flag); }; <\/code><\/pre>\n<p>  \u041d\u043e \u043c\u0435\u043d\u044f \u044d\u0442\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442. \u041c\u043d\u0435 \u043d\u0430\u0434\u043e \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 BytecodeVerificationLocal, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u0433\u0434\u0430 jvm \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0431\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 -Xverify. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435 \u0443\u043c\u0435\u0441\u0442\u043d\u044b\u043c \u043b\u0435\u0437\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0434\u0435\u0440\u0431\u0438 \u0438 \u043f\u043e\u0440\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u0432 \u043f\u043e\u043c\u043e\u0449\u044c. \u041f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 jvm \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <a href=\"http:\/\/docs.oracle.com\/cd\/E15289_01\/doc.40\/e15062\/optionx.htm#BABFEFGF\">-Xverify:remote<\/a> \u0438 BytecodeVerificationLocal \u0431\u0443\u0434\u0435\u0442 false.<\/p>\n<p>  \u0417\u043d\u0430\u0447\u0438\u0442 _need_verify \u0442\u043e\u0436\u0435 false \u0438 \u0432 check_property \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f assert_property(property, msg, index, CHECK) \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 false, \u00abInvalid superclass index %u in class file %s\u00bb, 0, CHECK_NULL.<\/p>\n<pre><code>  inline void assert_property(bool b, const char* msg, int index, TRAPS) { #ifdef ASSERT     if (!b) {       ResourceMark rm(THREAD);       fatal(err_msg(msg, index, _class_name-&gt;as_C_string()));     } #endif   } <\/code><\/pre>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0437\u0434\u0435\u0441\u044c \u0438 \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 fatal(msg), \u0447\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c \u043a\u0430\u043a \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f.<br \/>  \u0425\u043e\u0442\u044f, \u043d\u0430 \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u043c\u044b \u0443\u0436\u0435 \u043e\u0442\u0432\u0435\u0442\u0438\u043b\u0438. \u041d\u0435\u043b\u044c\u0437\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c classfile \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043b\u044f \u043f\u043e\u043b\u044f super_class \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 0 \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u0435\u0433\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u043e\u0433\u043e ClassLoader.<\/p>\n<p>  \u0418\u0442\u0430\u043a fatal, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0432 hotspot\/src\/share\/vm\/utilities\/debug.hpp:<\/p>\n<pre><code>#define fatal(msg)                                                           \\ do {                                                                         \\   report_fatal(__FILE__, __LINE__, msg);                                     \\   BREAKPOINT;                                                                \\ } while (0) <\/code><\/pre>\n<p>  hotspot\/src\/share\/vm\/utilities\/debug.cpp: <\/p>\n<pre><code>void report_fatal(const char* file, int line, const char* message) {   report_vm_error(file, line, &quot;fatal error&quot;, message); }  void report_vm_error(const char* file, int line, const char* error_msg,                      const char* detail_msg) {   if (Debugging || error_is_suppressed(file, line)) return;   Thread* const thread = ThreadLocalStorage::get_thread_slow();   VMError err(thread, file, line, error_msg, detail_msg);   err.report_and_die(); } <\/code><\/pre>\n<p>  \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f report_and_die() \u0432 hotspot\/src\/share\/vm\/utilities\/vmError.cpp \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430, \u043d\u043e \u0438\u0437 \u043d\u0435\u0435 \u0441\u043b\u0435\u0434\u0443\u0435\u0442, \u0447\u0442\u043e \u0432 Java \u043c\u044b \u0443\u0436\u0435 \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435 \u0438\u0437 \u043d\u0435\u0434\u0440 jvm. \u041d\u0430 \u044d\u0442\u043e\u043c \u044f \u0445\u043e\u0447\u0443 \u043f\u0435\u0440\u0435\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 jvm \u0438 java.lang.Object. <\/p>\n<h5>\u0412\u044b\u0432\u043e\u0434\u044b:<\/h5>\n<p>  java.lang.Object \u043e\u0441\u043e\u0431\u044b\u0439 \u043a\u043b\u0430\u0441\u0441, \u0438\u043c\u0435\u044e\u0449\u0438\u0439 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 class file, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0441\u0443\u043f\u0435\u0440\u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043d \u043d\u0438 \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441. \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043a\u043b\u0430\u0441\u0441 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u044f\u0437\u044b\u043a\u0430 Java \u043d\u0435\u043b\u044c\u0437\u044f, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0435\u0441\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0438 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u044f\u043c\u0438 \u0441 \u0431\u0430\u0439\u0442\u0430\u043c\u0438 class \u0444\u0430\u0439\u043b\u0430. \u041d\u0430\u0434\u0435\u044e\u0441\u044c \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0432\u043e\u0441\u0445\u0438\u0449\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u044f \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u043b \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 jvm. \u041f\u0440\u0438\u0437\u044b\u0432\u0430\u044e \u0432\u0441\u0435\u0445 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435.     \t<\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/265373\/\"> http:\/\/habrahabr.ru\/post\/265373\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t\u0412 Java \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 \u043b\u0435\u0436\u0438\u0442 \u043a\u043b\u0430\u0441\u0441 java.lang.Object. \u041b\u0435\u0436\u0438\u0442 \u0438 \u043b\u0435\u0436\u0438\u0442, \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u0438\u043c \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f.<br \/>  \u041d\u0430 \u0441\u043e\u0431\u0435\u0441\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0447\u0430\u0441\u0442\u043e \u0441\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u044e\u0442, \u043a\u0430\u043a\u0438\u0435 \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u043c\u0435\u0442\u043e\u0434\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043a\u0430\u043a-\u0442\u043e \u0441\u0430\u043c\u0438 \u0441\u043e\u0431\u043e\u0439 \u0432\u044b\u0443\u0447\u0438\u043b\u0438\u0441\u044c. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u044d\u0442\u043e\u0442 \u043a\u043b\u0430\u0441\u0441 \u0431\u043e\u043b\u0435\u0435 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u041f\u0435\u0440\u0432\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0430\u0445 Java \u043a\u043b\u0430\u0441\u0441 java.lang.Object. \u041e\u043d \u0436\u0435 \u0432\u0435\u0434\u044c \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u044b\u0439, \u043e\u043d \u0432\u043f\u043e\u043b\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0436\u0435\u0441\u0442\u043a\u043e \u0437\u0430\u0448\u0438\u0442 \u0432 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e, \u043a\u0430\u043a \u0441\u0430\u043c\u044b\u0439 \u0432\u0435\u0440\u0445\u043d\u0438\u0439.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0430\u043a\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0435\u0441\u0442\u044c \u0438 \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0442\u0443\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438 java\/lang\/Object.java, \u043e\u043f\u0443\u0441\u0442\u0438\u0432 javadoc, \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u043f\u0440\u043e\u043b\u0438\u0442\u044c \u0441\u0432\u0435\u0442 \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 jvm:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-264212","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/264212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=264212"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/264212\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=264212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=264212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=264212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}