Skip to content

junie: IllegalArgumentException: URI is not absolute #12186

Description

@ytzemih

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

Activity

  1. Siedlerchr commented on Nov 12, 2024

    @Siedlerchr
    Member

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

  2. ytzemih commented on Nov 12, 2024

    @ytzemih
    Author

    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.

  3. added this to the milestone on Nov 12, 2024
  4. added
    good first issueAn issue intended for project-newcomers. Varies in difficulty.
    on Nov 12, 2024
  5. moved this from Normal priority to High priority in Prioritizationon Nov 12, 2024
  6. removed this from the milestone on Nov 12, 2024
  7. ytzemih commented on Nov 13, 2024

    @ytzemih
    Author

    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.

  8. koppor commented on Nov 16, 2024

    @koppor
    Member

    After #12156 is merged, we can work on this.

  9. yash-agrawal03 commented on Nov 23, 2024

    @yash-agrawal03

    /assign-me

  10. github-actions commented on Nov 23, 2024

    @github-actions
    Contributor

    👋 Hey @yash-agrawal03, thank you for your interest in this issue! 🎉

    We're excited to have you on board. Start by exploring our Contributing guidelines, and don't forget to check out our workspace setup guidelines to get started smoothly.

    In case you encounter failing tests during development, please check our developer FAQs!

    Having any questions or issues? Feel free to ask here on GitHub. Need help setting up your local workspace? Join the conversation on JabRef's Gitter chat. And don't hesitate to open a (draft) pull request early on to show the direction it is heading towards. This way, you will receive valuable feedback.

    Happy coding! 🚀

    ⏳ Please note, you will be automatically unassigned if the issue isn't closed within 90 days (by 21 February 2025). A maintainer can also add the "📌 Pinned"" label to prevent automatic unassignment.

  11. 87 remaining items

  12. moved this from Done to Normal priority in Prioritizationon Jun 22, 2025
  13. changed the title [-]IllegalArgumentException: URI is not absolute[/-] [+]junie: IllegalArgumentException: URI is not absolute[/+] on Jul 30, 2025
  14. Siedlerchr commented on Jul 30, 2025

    @Siedlerchr
    Member

    @jetbrains-junie Solve this issue and use the reproducer for tests

  15. Siedlerchr commented on Aug 1, 2025

    @Siedlerchr
    Member
  16. Siedlerchr commented on Aug 7, 2025

    @Siedlerchr
    Member
  17. moved this from Normal priority to Done in Prioritizationon Aug 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    good second issueIssues that involve a tour of two or three interweaved components in JabRef

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions