Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IllegalArgumentException: URI is not absolute #12186

Open
2 tasks done
ytzemih opened this issue Nov 12, 2024 · 3 comments
Open
2 tasks done

IllegalArgumentException: URI is not absolute #12186

ytzemih opened this issue Nov 12, 2024 · 3 comments
Labels
bug Confirmed bugs or reports that are very likely to be bugs good first issue An issue intended for project-newcomers. Varies in difficulty.

Comments

@ytzemih
Copy link

ytzemih commented Nov 12, 2024

JabRef version

Latest development branch build (please note build date below)

Operating system

GNU / Linux

Details on version and operating system

JabRef 6.0--2024-11-05--4705977 Linux 6.1.0-26-amd64 amd64 Java 21.0.5 JavaFX 23.0.1+4

Checked with the latest development build (copy version output from About dialog)

  • I made a backup of my libraries before testing the latest development version.
  • I have tested the latest development version and the problem persists

Steps to reproduce the behaviour

  1. I've just been using global search.

Unfortunately, I can't quite reproduce this issue, although I've had this exception a few times already. It appears to be related to when I use search, the entry list when a group is selected. Also, it seems to happen after JR has been running for a while.

Appendix

...

Log File
java.lang.IllegalArgumentException: URI is not absolute
	at java.base/java.net.URL.of(Unknown Source)
	at java.base/java.net.URI.toURL(Unknown Source)
	at [email protected]/org.jabref.logic.importer.util.FileFieldParser.convert(Unknown Source)
	at [email protected]/org.jabref.logic.importer.util.FileFieldParser.parse(Unknown Source)
	at [email protected]/org.jabref.logic.importer.util.FileFieldParser.parse(Unknown Source)
	at java.base/java.util.Optional.map(Unknown Source)
	at [email protected]/com.tobiasdiez.easybind.optional.PreboundOptionalBinding$1.computeValue(Unknown Source)
	at [email protected]/com.tobiasdiez.easybind.optional.PreboundOptionalBinding$1.computeValue(Unknown Source)
	at [email protected]/javafx.beans.binding.ObjectBinding.get(Unknown Source)
	at [email protected]/javafx.beans.binding.ObjectExpression.getValue(Unknown Source)
	at [email protected]/com.tobiasdiez.easybind.optional.PreboundOptionalBinding$3.computeValue(Unknown Source)
	at [email protected]/javafx.beans.binding.ObjectBinding.get(Unknown Source)
	at [email protected]/javafx.beans.binding.ObjectExpression.getValue(Unknown Source)
	at [email protected]/javafx.scene.control.TableCell.updateItem(Unknown Source)
	at [email protected]/javafx.scene.control.TableCell.indexChanged(Unknown Source)
	at [email protected]/javafx.scene.control.IndexedCell.updateIndex(Unknown Source)
	at [email protected]/javafx.scene.control.skin.TableRowSkinBase.updateCells(Unknown Source)
	at [email protected]/javafx.scene.control.skin.TableRowSkinBase.checkState(Unknown Source)
	at [email protected]/javafx.scene.control.skin.TableRowSkinBase.computePrefHeight(Unknown Source)
	at [email protected]/javafx.scene.control.Control.computePrefHeight(Unknown Source)
	at [email protected]/javafx.scene.Parent.prefHeight(Unknown Source)
	at [email protected]/javafx.scene.layout.Region.prefHeight(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.resizeCell(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.getCell(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.getOrCreateCellSize(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.getOrCreateCellSize(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.recalculateAndImproveEstimatedSize(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.recalculateAndImproveEstimatedSize(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.recalculateEstimatedSize(Unknown Source)
	at [email protected]/javafx.scene.control.skin.VirtualFlow.layoutChildren(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Parent.layout(Unknown Source)
	at [email protected]/javafx.scene.Scene.doLayoutPass(Unknown Source)
	at [email protected]/javafx.scene.Scene$ScenePulseListener.pulse(Unknown Source)
	at [email protected]/com.sun.javafx.tk.Toolkit.lambda$runPulse$2(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at [email protected]/com.sun.javafx.tk.Toolkit.runPulse(Unknown Source)
	at [email protected]/com.sun.javafx.tk.Toolkit.firePulse(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.pulseFromQueue(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$11(Unknown Source)
	at [email protected]/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
	at [email protected]/com.sun.glass.ui.gtk.GtkApplication.enterNestedEventLoopImpl(Native Method)
	at [email protected]/com.sun.glass.ui.gtk.GtkApplication._enterNestedEventLoop(Unknown Source)
	at [email protected]/com.sun.glass.ui.Application.enterNestedEventLoop(Unknown Source)
	at [email protected]/com.sun.glass.ui.EventLoop.enter(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.enterNestedEventLoop(Unknown Source)
	at [email protected]/javafx.stage.Stage.showAndWait(Unknown Source)
	at [email protected]/javafx.scene.control.HeavyweightDialog.showAndWait(Unknown Source)
	at [email protected]/javafx.scene.control.Dialog.showAndWait(Unknown Source)
	at [email protected]/org.jabref.gui.JabRefDialogService.showConfirmationDialogAndWait(Unknown Source)
	at [email protected]/org.jabref.gui.search.GlobalSearchBar.lambda$initSearchModifierButtons$8(Unknown Source)
	at [email protected]/com.sun.javafx.binding.ExpressionHelper$SingleChange.fireValueChangedEvent(Unknown Source)
	at [email protected]/com.sun.javafx.binding.ExpressionHelper.fireValueChangedEvent(Unknown Source)
	at [email protected]/javafx.beans.property.BooleanPropertyBase.fireValueChangedEvent(Unknown Source)
	at [email protected]/javafx.beans.property.BooleanPropertyBase.markInvalid(Unknown Source)
	at [email protected]/javafx.beans.property.BooleanPropertyBase.set(Unknown Source)
	at [email protected]/javafx.scene.control.ToggleButton.setSelected(Unknown Source)
	at [email protected]/org.jabref.gui.search.GlobalSearchBar.lambda$initSearchModifierButtons$14(Unknown Source)
	at [email protected]/com.sun.javafx.collections.SetListenerHelper$Generic.fireValueChangedEvent(Unknown Source)
	at [email protected]/com.sun.javafx.collections.SetListenerHelper.fireValueChangedEvent(Unknown Source)
	at [email protected]/com.sun.javafx.collections.ObservableSetWrapper.callObservers(Unknown Source)
	at [email protected]/com.sun.javafx.collections.ObservableSetWrapper.remove(Unknown Source)
	at [email protected]/org.jabref.logic.search.SearchPreferences.setSearchFlag(Unknown Source)
	at [email protected]/org.jabref.gui.search.GlobalSearchBar.lambda$initSearchModifierButtons$9(Unknown Source)
	at [email protected]/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
	at [email protected]/javafx.event.Event.fireEvent(Unknown Source)
	at [email protected]/javafx.scene.Node.fireEvent(Unknown Source)
	at [email protected]/javafx.scene.control.ToggleButton.fire(Unknown Source)
	at [email protected]/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(Unknown Source)
	at [email protected]/com.sun.javafx.scene.control.inputmap.InputMap.handle(Unknown Source)
	at [email protected]/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
	at [email protected]/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
	at [email protected]/javafx.event.Event.fireEvent(Unknown Source)
	at [email protected]/javafx.scene.Scene$MouseHandler.process(Unknown Source)
	at [email protected]/javafx.scene.Scene.processMouseEvent(Unknown Source)
	at [email protected]/javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Unknown Source)
	at [email protected]/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown Source)
	at [email protected]/com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
	at [email protected]/com.sun.glass.ui.View.notifyMouse(Unknown Source)
	at [email protected]/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
	at [email protected]/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$10(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
@Siedlerchr
Copy link
Member

It seems to be related to a value in the file field somewhere that cannot be parsed to an URL

@ytzemih
Copy link
Author

ytzemih commented Nov 12, 2024

That makes sense, though, I haven't seen these exceptions before. Perhaps, the URI parser is now less relaxed? Ok, I'll try to check the file fields and see whether I can find something odd.

@koppor koppor added this to the 6.x milestone Nov 12, 2024
@Siedlerchr Siedlerchr added bug Confirmed bugs or reports that are very likely to be bugs good first issue An issue intended for project-newcomers. Varies in difficulty. labels Nov 12, 2024
@koppor koppor removed this from the 6.x milestone Nov 12, 2024
@ytzemih
Copy link
Author

ytzemih commented Nov 13, 2024

Alright, I can replicate this exception with the following MWE:

@InProceedings{Test,
  author       = {Test},
  title        = {Test},
  file         = {A test:www.yahoo.com/abc/cde.htm:URL},
}

It is derived from an entry existing in my DB, so not constructed. The repair amounts to adding a http://.

Alternatively, you can stimulate this exception with:

  1. Edit the file field of an entry
  2. Add file link
  3. Copy the URL from the snippet into the "Link" field
  4. Choose filetype URL
  5. Press "add"

I suppose that the exception will pop up wherever the URL parser is used. I've had some incomplete URLs in my DB files, but JR 6 now complains.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Confirmed bugs or reports that are very likely to be bugs good first issue An issue intended for project-newcomers. Varies in difficulty.
Projects
Status: Free to take
Status: High priority
Development

No branches or pull requests

3 participants