vib*_*has 3 java ant swing compiler-errors java-10
我目前正在尝试将我们的应用程序从Java 8迁移到Java 10,并且在几个月内将转向Java 11.
我们有一个遗留系统,它使用了一些API,我猜这些API会被移除或删除.我们使用ant脚本(1.10.1)进行应用程序编译.
以下是构建我们的应用程序的部分:
<target name="javac-setup" depends="flags, with.clover, jaxb-apply, flamingo.javac"/>
<target name="javac" depends="javac-setup">
<mkdir dir="${workmanager.dir.classes}"/>
<javac destdir="${workmanager.dir.classes}" deprecation="on" debug="${javac.debug}" encoding="iso-8859-1" includeantruntime="false">
<compilerarg line="-Xlint:static"/>
<compilerarg line="-Xlint:unchecked"/>
<compilerarg line="-Xlint:overrides"/>
<compilerarg line="-Xmaxerrs 9999" />
<compilerarg line="-Xmaxwarns 9999" />
<compilerarg value="-Werror"/>
<src path="${workmanager.dir.src}"/>
<src path="${webservices.dir.java.src}"/>
<patternset refid="java.sources"/>
<classpath refid="classes.classpath"/>
</javac>
</target>
Run Code Online (Sandbox Code Playgroud)
在编译期间,在转移到Java 10之后,我得到的几个与Java Swing相关的错误(再次是旧的,但必须使用它).因为我还没有完全意识到Java 10中发生的所有更改,对我来说它看起来很像喜欢这个问题与模块化概念有关.虽然还在学习,但不确定.我知道你的建议,知道这些错误是否与模块化有关.还有任何建议或提示来解决这些问题?
以下是错误:
[javac] Compiling 3253 source files to C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\classes
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\datamgmt\report\ui\AssignPosNumberToolbar.java:26: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsButtonUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\datamgmt\report\ui\AssignPosNumberToolbar.java:27: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsToolBarUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\utils\WMClosableTabbedPane.java:33: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsTabbedPaneUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\MultiColumnComboBox.java:58: error: package com.sun.java.swing.plaf.motif is not visible
[javac] import com.sun.java.swing.plaf.motif.MotifComboBoxUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.motif is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\datamgmt\ui\SimplificationComboBox.java:31: error: package com.sun.java.swing.plaf.motif is not visible
[javac] import com.sun.java.swing.plaf.motif.MotifComboBoxUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.motif is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPComboBoxUI.java:21: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsComboBoxUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\datamgmt\ui\favorites\FavoritesToolBar.java:28: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsButtonUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\datamgmt\ui\favorites\FavoritesToolBar.java:29: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsToolBarUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\ptc\PtcLaf.java:14: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\ptc\PtcMenuUI.java:31: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\ptc\PtcRadioButtonMenuItemUI.java:14: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsIconFactory;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\ptc\PtcSeparatorUI.java:20: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsSeparatorUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPButtonUI.java:26: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsButtonUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPLookAndFeel.java:24: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsIconFactory;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPLookAndFeel.java:25: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPMenuUI.java:25: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPRadioButtonMenuItemUI.java:14: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsIconFactory;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPSeparatorUI.java:17: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsSeparatorUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPToggleButtonUI.java:23: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsToggleButtonUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] C:\WorkSpace\JAVA10\oswm\rel20.10_Patches\WorkManager\src\com\osm\ui\laf\xplookandfeel\XPToolBarUI.java:17: error: package com.sun.java.swing.plaf.windows is not visible
[javac] import com.sun.java.swing.plaf.windows.WindowsToolBarUI;
[javac] ^
[javac] (package com.sun.java.swing.plaf.windows is declared in module java.desktop, which does not export it)
[javac] 20 errors
Run Code Online (Sandbox Code Playgroud)
Nic*_*lai 11
是的,这是由于模块系统.您正在访问内部API,默认情况下JPMS不允许您这样做.
要快速解决此问题,请对消息中提到的每个包使用命令行选项--add-exports %module/%package=ALL-UNNAMED,例如:
--add-exports java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED
Run Code Online (Sandbox Code Playgroud)
(不,没有通配符)您必须将这些添加到Java 9+的构建命令中,并且在某些时候(可能是Java 12+)也添加到您的执行命令中.
如上所述,这只是一个快速解决方案.有了模块系统,JDK团队可能会更积极地重构您正在使用的API之类的内部,因此您将来可能会遇到更改或删除类的问题.
正确的解决方法是删除对这些内部的依赖关系.第一步是检查您在那里使用的功能是否可能同时获得标准化API.