<div>Hi Artem, Alexander and Pavel ,</div><div><br></div><div>   I&#39;m writing the testcase, but while testing it, I got IllegalAccessError .</div><div>Compilation of the testcase is successful. The spec says </div><div>
&quot; this error can
 only occur at run time if the definition of a </div><div>class has
 incompatibly changed.&quot;  I&#39;m using jdk8 built on</div><div>2012_02_01_17_01 and I changed nothing about that class.</div><div>Do you have any idea about the error ? Thanks.</div><div><br></div><div>The test case and error are as follow:</div>
<div><br></div><div>////////// includes two classes.</div><div><br></div><div><div>package sun.awt.X11 ;</div><div>import java.awt.TextArea;</div><div>import javax.swing.text.Caret;</div><div>import javax.swing.JTextArea;</div>
<div>import java.lang.reflect.Field;</div><div><br></div><div>public class XPeerTestHelper extends XTextAreaPeer{</div><div><br></div><div>    public XPeerTestHelper(TextArea target) {</div><div>        super(target);</div>
<div>    }</div><div><br></div><div>    public Caret getCaret() {</div><div>        return jtext.getCaret();  // Exception reported to this line.</div><div>    }</div><div>        </div><div>}</div></div><div><br></div><div>
/////</div><div><br></div><div><br></div><div><div>import java.awt.FlowLayout;</div><div>
import java.awt.TextArea;</div><div>import java.awt.Toolkit;</div><div><br></div><div>import javax.swing.JButton;</div><div>import javax.swing.JFrame;</div><div>import javax.swing.JTextField;</div><div>import javax.swing.SwingUtilities;</div>

<div>import javax.swing.text.DefaultCaret;</div><div><br></div><div>import sun.awt.SunToolkit;</div><div>import sun.awt.X11.XPeerTestHelper;</div><div><br></div><div>public class bug7129742 {</div><div>    public static boolean passed = false;</div>

<div>    </div><div>    public static JFrame frame = null;</div><div>    public static JButton button = null;</div><div>    public static TextArea textArea = null;</div><div><br></div><div>    public static DefaultCaret caret = null;</div>

<div><br></div><div>    public static void main(String[] args) throws Exception {</div><div>        SunToolkit toolkit = (SunToolkit) Toolkit.getDefaultToolkit();</div><div>        SwingUtilities.invokeAndWait(new Runnable() {</div>

<div>            @Override</div><div>            public void run() {</div><div>                frame = new JFrame(&quot;Test&quot;);</div><div>                </div><div>                button = new JButton(&quot;JButton&quot;);</div>

<div>                textArea = new TextArea(&quot;Non-editable textArea&quot;);</div><div>                textArea.setEditable(false);</div><div><br></div><div>                frame.setLayout(new FlowLayout());</div><div>

                frame.getContentPane().add(button);</div><div>                frame.getContentPane().add(textArea);</div><div><br></div><div>                frame.pack();</div><div>                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</div>

<div>                frame.setVisible(true);</div><div>            }</div><div>        });</div><div>        toolkit.realSync();</div><div>        </div><div>        SwingUtilities.invokeAndWait(new Runnable() {</div><div>

            @Override</div><div>            public void run() {</div><div>                //caret = (DefaultCaret) </div><div>                try {</div><div>                    XPeerTestHelper helper = new XPeerTestHelper(textArea);</div>

<div>                    caret = (DefaultCaret) helper.getCaret();</div><div>                } catch (ClassCastException e ){</div><div>                    // If it is not XTextAreaPeer, the test case is skipped</div><div>

                    System.out.println(&quot;It is not it is not XTextAreaPeer, testcase skipped&quot;);</div><div>                    passed = true;</div><div>                }</div><div>            }</div><div>        });</div>

<div>        toolkit.realSync();</div><div>        </div><div>        if (passed){</div><div>            SwingUtilities.invokeAndWait(new Runnable() {</div><div>                @Override</div><div>                public void run() {</div>

<div>                    frame.dispose();</div><div>                }</div><div>            });</div><div>            toolkit.realSync();</div><div>            return;</div><div>        }</div><div>        </div><div>        SwingUtilities.invokeAndWait(new Runnable() {</div>

<div>            @Override</div><div>            public void run() {</div><div>                button.requestFocusInWindow();</div><div>            }</div><div>        });</div><div>        toolkit.realSync();</div><div>
        </div>
<div>        SwingUtilities.invokeAndWait(new Runnable() {</div><div>            @Override</div><div>            public void run() {</div><div>                textArea.requestFocusInWindow();</div><div>            }</div>

<div>        });</div><div>        toolkit.realSync();</div><div>        </div><div>        SwingUtilities.invokeAndWait(new Runnable() {</div><div>            @Override</div><div>            public void run() {</div><div>

                passed = caret.isVisible();</div><div>                frame.dispose();</div><div>            }</div><div>        });</div><div>        toolkit.realSync();</div><div>        </div><div>        if (!passed) {</div>

<div>            throw new RuntimeException(&quot;The test for bug 71297422 failed&quot;);</div><div>        }</div><div>    </div><div>    }</div><div>}</div></div><div><br></div><div>/////////////////////////  end testcase</div>
<div><br></div><div><br></div><div>Error information is:</div><div><div>Exception in thread &quot;main&quot; java.lang.reflect.InvocationTargetException</div>
<div><span style="white-space:pre-wrap">        </span>at java.awt.EventQueue.invokeAndWait(EventQueue.java:1238)</div><div><span style="white-space:pre-wrap">        </span>at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1344)</div>

<div><span style="white-space:pre-wrap">        </span>at bug7129742.main(bug7129742.java:80)</div><div>Caused by: java.lang.IllegalAccessError: class sun.awt.X11.XPeerTestHelper cannot access its superclass sun.awt.X11.XTextAreaPeer</div>

<div><span style="white-space:pre-wrap">        </span>at java.lang.ClassLoader.defineClass1(Native Method)</div><div><span style="white-space:pre-wrap">        </span>at java.lang.ClassLoader.defineClass(ClassLoader.java:791)</div>
<div><span style="white-space:pre-wrap">        </span>at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)</div><div><span style="white-space:pre-wrap">        </span>at java.net.URLClassLoader.defineClass(URLClassLoader.java:442)</div>

<div><span style="white-space:pre-wrap">        </span>at java.net.URLClassLoader.access$100(URLClassLoader.java:64)</div><div><span style="white-space:pre-wrap">        </span>at java.net.URLClassLoader$1.run(URLClassLoader.java:354)</div>

<div><span style="white-space:pre-wrap">        </span>at java.net.URLClassLoader$1.run(URLClassLoader.java:348)</div><div><span style="white-space:pre-wrap">        </span>at java.security.AccessController.doPrivileged(Native Method)</div>

<div><span style="white-space:pre-wrap">        </span>at java.net.URLClassLoader.findClass(URLClassLoader.java:347)</div><div><span style="white-space:pre-wrap">        </span>at java.lang.ClassLoader.loadClass(ClassLoader.java:423)</div>

<div><span style="white-space:pre-wrap">        </span>at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)</div><div><span style="white-space:pre-wrap">        </span>at java.lang.ClassLoader.loadClass(ClassLoader.java:356)</div>

<div><span style="white-space:pre-wrap">        </span>at bug7129742$2.run(bug7129742.java:85)</div><div><span style="white-space:pre-wrap">        </span>at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:241)</div>
<div><span style="white-space:pre-wrap">        </span>at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:701)</div><div><span style="white-space:pre-wrap">        </span>at java.awt.EventQueue.access$000(EventQueue.java:102)</div>

<div><span style="white-space:pre-wrap">        </span>at java.awt.EventQueue$3.run(EventQueue.java:662)</div><div><span style="white-space:pre-wrap">        </span>at java.awt.EventQueue$3.run(EventQueue.java:660)</div>
<div><span style="white-space:pre-wrap">        </span>at java.security.AccessController.doPrivileged(Native Method)</div><div><span style="white-space:pre-wrap">        </span>at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)</div>

<div><span style="white-space:pre-wrap">        </span>at java.awt.EventQueue.dispatchEvent(EventQueue.java:671)</div><div><span style="white-space:pre-wrap">        </span>at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:216)</div>

<div><span style="white-space:pre-wrap">        </span>at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:135)</div><div><span style="white-space:pre-wrap">        </span>at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:123)</div>

<div><span style="white-space:pre-wrap">        </span>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:119)</div><div><span style="white-space:pre-wrap">        </span>at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:111)</div>

<div><span style="white-space:pre-wrap">        </span>at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)</div></div><div><br></div><div><br></div><div><br></div><br><br><div class="gmail_quote">On Mon, Jan 16, 2012 at 11:56 PM, Artem Ananiev <span dir="ltr">&lt;<a href="mailto:artem.ananiev@oracle.com" target="_blank">artem.ananiev@oracle.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, Sean,<br>
<br>
text components in XToolkit use Swing peers, so this change should better be reviewed on the swing-dev alias. To save everybody&#39;s time, I&#39;ve asked Alex and Pavel from the Swing team (in CC) to take a look and they confirm the fix looks fine.<br>


<br>
Did you consider creating a new regression test for this fix? I&#39;m not sure it&#39;s easy to detect if caret is visible in the text component or not, though.<br>
<br>
Thanks,<br><font color="#888888">
<br>
Artem</font><div><div></div><div><br>
<br>
On 1/16/2012 7:08 AM, Sean Chou wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi all,<br>
<br>
    I made a patch for bug 7129742,<br>
<a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7129742" target="_blank">http://bugs.sun.com/<u></u>bugdatabase/view_bug.do?bug_<u></u>id=7129742</a> .<br>
The webrev link is : <a href="http://cr.openjdk.java.net/~zhouyx/7129742/webrev.00/" target="_blank">http://cr.openjdk.java.net/~<u></u>zhouyx/7129742/webrev.00/</a><br>
<br>
    The solution is very simple, just set the cursor visible.<br>
<br>
    Please have a look and give some comments. Thanks.<br>
<br>
--<br>
Best Regards,<br>
Sean Chou<br>
<br>
</blockquote>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Best Regards,<br>Sean Chou<br><br>