0

我正在尝试AWTAccessor.getCursorAccessor().setPData(this, cursor);为该类运行与游标相关的操作sun.awt.AWTAccessor

我收到错误:

Exception in thread "main" java.lang.IllegalAccessError: class xawtcursor.XImageCursor (in unnamed module @0x3d3fcdb0) cannot access class sun.awt.AWTAccessor (in module java.desktop) because module java.desktop does not export sun.awt to unnamed module @0x3d3fcdb0
    at xawtcursor.XImageCursor.createNativeCursor(XImageCursor.java:25)
    ...

一些测试代码(1这里是无效的,但只是为了简化测试代码以便可以重现):

package xawtcursor;

import sun.awt.AWTAccessor;
import sun.awt.X11.XCustomCursor;
import sun.awt.X11.XToolkit;

import java.awt.*;

public class XImageCursor extends XCustomCursor {
    public XImageCursor(Image cursor, Point hotSpot, String name) throws IndexOutOfBoundsException {
        super(cursor, hotSpot, name);
    }

    protected void createNativeCursor(Image im, int[] pixels, int width, int height, int xHotSpot, int yHotSpot) {
        XToolkit.awtLock();
        try {
            AWTAccessor.getCursorAccessor().setPData(this, 1);
        } finally {
            XToolkit.awtUnlock();
        }
    }
}

我试过--add-exports=java.desktop/sun.awt.X11=ALL-UNNAMED修复了一个错误。让我访问这个的编译选项是什么?

4

1 回答 1

0

原来我只需要添加多个--add-exports选项。添加以下作品:

--add-exports=java.desktop/sun.awt=ALL-UNNAMED --add-exports=java.desktop/sun.awt.X11=ALL-UNNAMED
于 2021-07-10T12:45:09.350 回答