Проблема бинарной совместимости Java: sun.шрифт.Класс FontManager стал интерфейсом
я использую Веб - Браузер Lobo-Java библиотека, и это дает мне исключение, которое после некоторых исследований я определил, может быть связано с тем, что библиотека была выполнена против более старой версии 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
который изменился с предыдущей версии Java. В этом FontFactory
класс, они использовали класс этого интерфейса, который больше недоступен. Как я могу решить эту проблему?
интерфейс 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));
3 ответов
Я думаю, что 'Солнце.шрифт.FontManager был удален с Java7, так что если вы должны использовать его (я рекомендовал бы против него и поискать другой пакет), вы могли бы попробовать запустить его с java6.
проект lobobrowser мертв, но некоторые хорошие comittet патч, чтобы исправить вашу проблему:
http://sourceforge.net/tracker/?func=detail&aid=2991043&group_id=139023&atid=742262
Так как мертвый проект не выпускает никаких исправленных банок, я сделал это ; -) найти cobra-gp-0.98.5.Джар С вышеуказанным патч применяется на : http://www.wikisquare.de/public/cobra-gp-0.98.5.jar
javax.качать.текст.StyleContext.getDefaultStyleContext.getFont может работать для вас в выпусках JDK.
см. далее http://elliotth.blogspot.com.au/2007/04/far-east-asian-fonts-with-java-7-on.html