- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 JavaFX 的小实验项目,其中有一个按钮和一个 WebView。按下按钮时,将加载网站:
package sample;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.web.WebView;
public class Controller {
@FXML private Button theButton;
@FXML private WebView theWebView;
@FXML
protected void loadWebSite(ActionEvent event) {
theWebView.getEngine().load("https://dashman.tech");
}
}
发生这种情况时,我会收到以下错误:
java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.substring(String.java:1963)
at com.sun.javafx.webkit.prism.WCGraphicsPrismContext.drawString(WCGraphicsPrismContext.java:960)
at com.sun.webkit.graphics.GraphicsDecoder.decode(GraphicsDecoder.java:290)
at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:91)
at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:102)
at com.sun.webkit.graphics.WCImage.flushRQ(WCImage.java:52)
at com.sun.javafx.webkit.prism.RTImage.lambda$getPixelBuffer$77(RTImage.java:163)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)
java.lang.StringIndexOutOfBoundsException: String index out of range: 7
at java.lang.String.substring(String.java:1963)
at com.sun.javafx.webkit.prism.WCGraphicsPrismContext.drawString(WCGraphicsPrismContext.java:960)
at com.sun.webkit.graphics.GraphicsDecoder.decode(GraphicsDecoder.java:290)
at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:91)
at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:102)
at com.sun.webkit.graphics.WCImage.flushRQ(WCImage.java:52)
at com.sun.javafx.webkit.prism.RTImage.lambda$getPixelBuffer$77(RTImage.java:163)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)
java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.substring(String.java:1963)
at com.sun.javafx.webkit.prism.WCGraphicsPrismContext.drawString(WCGraphicsPrismContext.java:960)
at com.sun.webkit.graphics.GraphicsDecoder.decode(GraphicsDecoder.java:290)
at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:91)
at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:102)
at com.sun.webkit.graphics.WCImage.flushRQ(WCImage.java:52)
at com.sun.javafx.webkit.prism.RTImage.lambda$getPixelBuffer$77(RTImage.java:163)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
at java.lang.Thread.run(Thread.java:745)
有什么想法吗?我该如何预防?该网站似乎加载良好。其他网站不会生成这些错误。
最佳答案
当我在 Mac OSX 上使用 jdk1.8.0_131 进行测试时,我得到了一个略有不同的错误,其中使用了堆栈上的 native 方法的不同堆栈:
Exception in thread "JavaFX Application Thread" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.substring(String.java:1963)
at com.sun.javafx.webkit.prism.WCFontImpl.getGlyphsAndAdvances(WCFontImpl.java:120)
at com.sun.webkit.network.URLLoader.twkDidReceiveData(Native Method)
at com.sun.webkit.network.URLLoader.notifyDidReceiveData(URLLoader.java:844)
at com.sun.webkit.network.URLLoader.lambda$didReceiveData$102(URLLoader.java:819)
at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
当我将com.sun.javafx.webkit.prism.WCFontImpl
的日志记录级别设置为全部时,我得到以下信息:
c.sun.javafx.webkit.prism.WCFontImpl - str='ð' (length=2), from=0, to=4, rtl=false
c.sun.javafx.webkit.prism.WCFontImpl - str='ð©' (length=4), from=0, to=7, rtl=false
c.sun.javafx.webkit.prism.WCFontImpl - str='ð' (length=3), from=0, to=6, rtl=false
当我查看字符串时,日志消息中的长度似乎是正确的字符数,但 from 和 to 的参数似乎不采用考虑到字符串包含多字节字符。这些错误的值用于子字符串调用,然后导致异常。我无法找出哪种字体在这里造成麻烦。
所以我认为,该网站加载了一些已损坏或不正确的字体。浏览器引擎会忽略这些错误,尽管会转储堆栈跟踪,这就是页面仍然可以工作的原因 - 也许没有以所需的字体显示某些内容。
为什么你有不同的堆栈跟踪?我不确定,这可能是因为您使用不同的操作系统或不同的 Java 版本?
而且我认为您无法阻止这种情况,除非您对该网站负责并检查所使用的字体。
关于JavaFX WebEngine 生成 StringIndexOutOfBoundsException,出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43953096/
我正在编写一个程序,该程序从文件“items.txt”获取输入,并根据“changes.txt”添加或删除行,然后输出到另一个文件。 这是“items.txt”文件: 101,Nail #1 102,
我创建了一个应该清理String的方法。它必须删除 [a,z] 范围内的每个字符。 但我收到此异常:StringIndexOutOfBoundsException。当我插入超出条件的数字时,就会弹出此
我正在制作的这个程序编译不正确,我不断收到错误:线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-9 在 java.l
在输入整数后输入字符串“s”时出现此错误。 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String i
当我按下 Android 应用程序的“提交”按钮时,我遇到了应用程序崩溃的情况。该应用程序负责发送输入的数据,将其作为事件添加到用户的日历中。仅当日期字段留空时应用程序才会崩溃。我注意到存储日期分割部
我正在解决一个问题,如果相邻字符具有相同的值,我必须从字符串中删除字符。这是我的代码: import java.util.Scanner; public class SuperReducedStrin
我必须创建一个数字内存游戏,但如果用户输入错误的数字,我会收到 StringIndexOutOfBoundsException。我看了很多例子,但仍然不知道如何解决它。这发生在 actionPerfo
我编写了一个静态方法,旨在获取字符串并将其打乱。 当您输入给定的字符串,例如“四分七”时,您应该得到输出 “f rneosedvuc eroasn”,因为字符串被打乱到下面的网格中。 row 1:
我有以下代码 public class test{ public static void main(String[] args){ String one = "x";
当我尝试放置一个带有十六进制颜色的字符串变量来设置我的适配器类上的 edittext 的 setbackgroundcolor(Color.parseColor(String s)) 时,它说 Str
import java.io.* ; class Specimen { public static void main(String[] args) throws IOException
我在 Java 中收到以下错误消息 Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String i
我有这个代码: String input = JOptionPane.showInputDialog("Enter text"); StringBuilder forward = new String
我有以下代码 while (input.hasNextLine()) { String line = input.nextLine(); System.out.println(line
在 stackoverflow 和其他论坛上寻找解决方案一个小时后,我放弃了。 您知道我为什么会遇到异常吗? public Stack einlesen(){ Scanner sc =
为什么下面的 Java 代码片段在第三行代码中抛出 StringIndexOutOfBoundsException? String str = "1234567890"; String sub1 =
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
这应该隔离姓名和分数,然后计算分数的平均值。输出应如下所示: Student Name Test 1 Test 2 Test 3 Final Avera
这个错误是在子字符串方法上抛出的,我发现很多线程都在处理这个问题,但我遇到的问题似乎有所不同。我知道如果您的字符串短于子字符串(开始,结束)大小,它会抛出此错误,但在任何内容传递到方法调用之前都会抛出
我正在使用 java 编写一个密码学/密码分析程序作为我主人的家庭作业。无论如何,我使用一种方法来删除无用的空格并使我显示的字符串正确地显示在 JTextArea 中。此方法非常适合小文本,但当我使用
我是一名优秀的程序员,十分优秀!