本文介紹了在Java15模塊化設置中使用Eclipse中的SWT的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我只是嘗試使用以下命令運行基本的Hello World(項目Trial0
)應用程序:
Eclipse版本:2020-12(4.18.0)
使用SWT 4.18(Linux、GTK)
將Java編譯器設置為15
按照Developing SWT applications using Eclipse中的描述(有點古老,是關于JDK 1.4和SWT 3.1),我已經將SWT項目導入到Eclipse中:
-
轉到https://download.eclipse.org/eclipse/downloads/index.html#Stable_Builds
單擊";4.18";到達https://download.eclipse.org/eclipse/downloads/drops4/R-4.18-202012021800/
向下滾動,直到到達";SWT二進制文件和源代碼,然后下載壓縮文件(&QOT;SWT BINARY&SOURCE&QOOT;)
swt-4.18-gtk-linux-x86_64.zip。
壓縮包包含‘swt.jar’(包含‘.so’文件)。啟動Eclipse的";File>;Import>;General&>Existing Projects to Workspace";,然后選擇上面的zip作為";Archive File";
我立即在使用導入的SWT項目的項目中遇到模塊化/Jigsaw問題。編譯器顯然不允許查看未模塊化的SWT類:
&q;無法訪問org.eclipse.swt.widgets包
在此代碼中:
package trial;
import org.eclipse.swt.widgets.*; // "The package org.eclipse.swt.widgets is not accessible"
public class MyApp {
}
這里是項目:
注意導入項目上的module-info.java
文件。它包含:
module trial0 {
requires java.desktop;
}
swt.jar
確實不播發模塊:
$ jar --file=swt.jar --describe-module
No module descriptor found. Derived automatic module.
swt automatic
requires java.base mandated
contains org.eclipse.swt
contains org.eclipse.swt.accessibility
contains org.eclipse.swt.awt
contains org.eclipse.swt.browser
contains org.eclipse.swt.custom
contains org.eclipse.swt.dnd
contains org.eclipse.swt.events
contains org.eclipse.swt.graphics
contains org.eclipse.swt.internal
contains org.eclipse.swt.internal.accessibility.gtk
contains org.eclipse.swt.internal.cairo
contains org.eclipse.swt.internal.dnd.gtk
contains org.eclipse.swt.internal.gtk
contains org.eclipse.swt.internal.image
contains org.eclipse.swt.internal.opengl.glx
contains org.eclipse.swt.internal.webkit
contains org.eclipse.swt.layout
contains org.eclipse.swt.opengl
contains org.eclipse.swt.printing
contains org.eclipse.swt.program
contains org.eclipse.swt.widgets
是否需要將module-info.java
個文件添加到SWT JAR中?有沒有另一種將SWT罐子拉到模塊化區域的&規范&方法?
推薦答案
根據輸出describing the module from the jar文件可以看到。
在module-info.java
文件中,您需要添加以下指令:
requires swt;
這將為您提供對模塊swt
(自動模塊名稱)聲明的包org.eclipse.swt.widgets
的訪問權限
contains org.eclipse.swt.widgets
其描述本身。
導入項目的文件module-info.java
現在包含:
module trial0 {
requires java.desktop;
requires swt;
}
Eclipse將此警告附加到行requires swt;
:
自動模塊”swt”的名稱不穩定,它派生自
模塊的文件名。
沒關系。
以上可能仍不起作用。在這種情況下,請驗證以下內容:
項目org.eclipse.swt
位于導入項目的Modulepath,而不是Classpath:
導入的模塊上需要有訪問規則。以下訪問規則似乎有效:
請注意,在";模塊依賴項";中沒有為導入項目定義任何特定內容:
這篇關于在Java15模塊化設置中使用Eclipse中的SWT的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,