gpt4 book ai didi

Java 二进制兼容性问题 : sun. font.FontManager 类成为接口(interface)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:40 24 4
gpt4 key购买 nike

我正在使用 Lobo - Java Web Browser库,它给了我一个异常,经过一些研究我确定可能是由于该库已针对旧版本的 Java 进行了编译。

代码如下:

import java.io.IOException;
import org.lobobrowser.html.UserAgentContext;
import org.lobobrowser.html.parser.DocumentBuilderImpl;
import org.lobobrowser.html.parser.InputSourceImpl;
import org.lobobrowser.html.test.SimpleUserAgentContext;
import org.xml.sax.SAXException;

public class Cobratest
{
public static void main(String[] args) throws SAXException, IOException
{
UserAgentContext uAgent = new SimpleUserAgentContext();
DocumentBuilderImpl docBuild = new DocumentBuilderImpl(uAgent);
docBuild.parse(new InputSourceImpl("http://dic.amdz.com/"));
}
}

堆栈跟踪是:

 Exception in thread "main" java.lang.IncompatibleClassChangeError: Found interface sun.font.FontManager, but class was expected
at org.lobobrowser.util.gui.FontFactory.createFont(FontFactory.java:210)
at org.lobobrowser.util.gui.FontFactory.createFont_Impl(FontFactory.java:180)
at org.lobobrowser.util.gui.FontFactory.createFont(FontFactory.java:127)
at org.lobobrowser.util.gui.FontFactory.getFont(FontFactory.java:98)
at org.lobobrowser.html.style.StyleSheetRenderState.<clinit>(StyleSheetRenderState.java:43)
at org.lobobrowser.html.domimpl.NodeImpl.<clinit>(NodeImpl.java:39)
at org.lobobrowser.html.parser.DocumentBuilderImpl.createDocument(DocumentBuilderImpl.java:143)
at org.lobobrowser.html.parser.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:97)

当我检查 org.lobobrowser.util.gui.FontFactory.createFont 时,我发现有一个名为 FontManager 的接口(interface),它与以前的 Java 版本不同。在这个 FontFactory 类中,他们使用了一个不再可用的接口(interface)类。我该如何解决这个问题?

接口(interface)FontManager:

package sun.font;

import java.awt.Font;
import java.awt.FontFormatException;
import java.io.File;

public interface FontManager {

public static final int NO_FALLBACK = 0;
public static final int PHYSICAL_FALLBACK = 1;
public static final int LOGICAL_FALLBACK = 2;

public boolean registerFont(Font font);

public void deRegisterBadFont(Font2D font2d);

public Font2D findFont2D(String string, int i, int i1);

public Font2D createFont2D(File file, int i, boolean bln, CreatedFontTracker cft) throws FontFormatException;

public boolean usingPerAppContextComposites();

public Font2DHandle getNewComposite(String string, int i, Font2DHandle fdh);

public void preferLocaleFonts();

public void preferProportionalFonts();
}

以及库中使用的不可用的类:

   return FontManager.getCompositeFontUIResource(new Font(name, style, size));

最佳答案

我认为“sun.font.FontManager”在 Java7 中被删除了,所以如果你必须使用它(我建议不要使用它并寻找另一个包)你可以尝试用 java6 运行它。

关于Java 二进制兼容性问题 : sun. font.FontManager 类成为接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9246371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com