eclipse 3.5 中的 FreeMarker 编辑器给出非法参数异常

Posted

技术标签:

【中文标题】eclipse 3.5 中的 FreeMarker 编辑器给出非法参数异常【英文标题】:FreeMarker Editor in eclipse 3.5 giving Illegal Argument Exception 【发布时间】:2010-12-11 14:40:49 【问题描述】:

我正在尝试在 eclipse 3.5 Galileo 中使用 freemarker 编辑器并发现异常:

java.lang.IllegalArgumentException: Argument not valid
    at org.eclipse.swt.SWT.error(SWT.java:3865)
    at org.eclipse.swt.SWT.error(SWT.java:3799)
    at org.eclipse.swt.SWT.error(SWT.java:3770)
    at org.eclipse.swt.custom.StyledText.setStyleRanges(StyledText.java:9029)
    at org.eclipse.swt.custom.StyledText.setStyleRanges(StyledText.java:9123)
    at org.eclipse.jface.text.TextViewer.applyTextPresentation(TextViewer.java:4801)
    at org.eclipse.jface.text.TextViewer.changeTextPresentation(TextViewer.java:4853)
    at org.eclipse.jface.text.presentation.PresentationReconciler.applyTextRegionCollection(PresentationReconciler.java:579)
    at org.eclipse.jface.text.presentation.PresentationReconciler.processDamage(PresentationReconciler.java:568)
    at org.eclipse.jface.text.presentation.PresentationReconciler.access$3(PresentationReconciler.java:564)
    at org.eclipse.jface.text.presentation.PresentationReconciler$InternalListener.inputDocumentChanged(PresentationReconciler.java:119)
    at org.eclipse.jface.text.TextViewer.fireInputDocumentChanged(TextViewer.java:2870)
    at org.eclipse.jface.text.TextViewer.setDocument(TextViewer.java:2919)
    at org.eclipse.jface.text.source.SourceViewer.setDocument(SourceViewer.java:545)
    at org.eclipse.jface.text.source.SourceViewer.setDocument(SourceViewer.java:500)
    at org.eclipse.ui.texteditor.AbstractTextEditor.initializeSourceViewer(AbstractTextEditor.java:3951)
    at org.eclipse.ui.texteditor.AbstractTextEditor.createPartControl(AbstractTextEditor.java:3466)
    at org.eclipse.ui.texteditor.StatusTextEditor.createPartControl(StatusTextEditor.java:53)
    at org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.createPartControl(AbstractDecoratedTextEditor.java:427)
    at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:662)
    at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:462)
    at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
    at org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:286)
    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2857)
    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2762)
    at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2754)
    at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2705)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2701)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2685)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2676)
    at org.eclipse.ui.ide.IDE.openEditor(IDE.java:651)
    at org.eclipse.ui.ide.IDE.openEditor(IDE.java:610)
    at org.eclipse.ui.internal.ide.handlers.OpenResourceHandler.execute(OpenResourceHandler.java:129)
    at org.eclipse.ui.internal.ide.handlers.OpenResourceHandler.run(OpenResourceHandler.java:181)
    at org.eclipse.ui.internal.handlers.ActionDelegateHandlerProxy.execute(ActionDelegateHandlerProxy.java:289)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
    at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
    at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:470)
    at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:824)
    at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:880)
    at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:569)
    at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:510)
    at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:125)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1191)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1002)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1040)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1036)
    at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1368)
    at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4053)
    at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:346)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:3946)
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:342)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4589)
    at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2410)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3471)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)

我替换了插件目录中的freemarker jar,我也在使用clean选项..但找不到任何东西......

【问题讨论】:

【参考方案1】:

FreeMarker 有点旧(December 2008 中的最新版本)。

您能否检查是否重现了 eclipse Ganymede 3.4(.x)(旧版本)或 eclipse 3.5.1(更新)的问题? 从那时起,SWT 可能以不兼容的方式发展。或者它可能只是一个尚未解决的旧错误(如 115253 one 或 the 287886,应该已修复 in 282218,但对于 Mac 并且可能仅在 3.5.1 中)。

【讨论】:

【参考方案2】:

在上面的堆栈跟踪中没有提到 Freemarker 类。你用的是什么编辑器?

我有 Eclipse 3.5.20090621-0832 和 Freemarker IDE 1.1.0.M1-N200906060434-H241,两者都运行良好。 Freemarker IDE 是 JBoss Tools 的一部分。

您可以获取latest development milestone(稳定版本仅支持 Eclipse 3.4.2) - 请注意,它需要 Eclipse 3.5.1 / Galileo SR1。

或者,如果您使用 Eclipse 的内置包管理,更新站点是 here 以及 installation instructions

【讨论】:

【参考方案3】:

刚遇到同样的问题,追踪到:

<style type="text/css">
<?php ?>

基本上,这个异常似乎是抛出 b/c 解析器被 html 和 PHP 的某些组合所混淆。

我可以通过创建一个新的 PHP 文件并用类似的东西填充它来抛出这个异常。但奇怪的是,在玩了一段时间之后,似乎让异常消失了。所以也许这是我在一段时间后编辑中和的 Unicode 问题。

不管怎样,你去吧。

最好的

拉斐尔

【讨论】:

以上是关于eclipse 3.5 中的 FreeMarker 编辑器给出非法参数异常的主要内容,如果未能解决你的问题,请参考以下文章

在freemarker中如何设置红色的*?

Eclipse安装Freemarker插件

eclipse中安装freemarker插件及ftl使用freemarker编辑器

eclipse添加freemarker插件

eclipse配置freemarker,*.ftl文件

eclipse和sublime3打开freemarker(.ftl)文件