jabref
jabref copied to clipboard
IllegalArgumentException: URI is not absolute
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)
- [x] I made a backup of my libraries before testing the latest development version.
- [x] I have tested the latest development version and the problem persists
Steps to reproduce the behaviour
- 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)
It seems to be related to a value in the file field somewhere that cannot be parsed to an URL
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.
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:
- Edit the file field of an entry
- Add file link
- Copy the URL from the snippet into the "Link" field
- Choose filetype URL
- 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.
After https://github.com/JabRef/jabref/pull/12156/ is merged, we can work on this.
/assign-me
π 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.
@koppor by when is the pr #12156 expected to close? I have to wait for that PR to get closed right?
@yash-agrawal03 I worked on it, it is merged now.
Thank-You koppor, I will start working on this issue.
/unassign @yash-agrawal03
π Hey @yash-agrawal03, you've been automatically unassigned from this issue due to inactivity.
[!NOTE] If you'd like to be re-assigned, just leave another comment or ask a maintainer to assign you again. If you're still actively working on the issue, let us know by commenting, and we can pin it to prevent automatic unassignment.
/assign-me
Please give me another chance to complete this request
Hi, I am Yash , a student at King's College London working with @LinusDietz. Could I work on this task?
/assign @yshukla01
π Hey @yshukla01, 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 07 May 2025). A maintainer can also add the "π Pinned"" label to prevent automatic unassignment.
π Assignment Update
Hi @yshukla01, you are no longer assigned to this issue.
Next steps
If you still want to work on this:
- Comment with
/assign-meto request reassignment - Ask a maintainer to assign you again
- If you're making progress, a maintainer can add the pin label to prevent future automatic unassignment
Hello, @koppor I am Fahad can you assign me this task, please?
π Hey @sfahaddev, looks like youβre eager to work on this issueβgreat! π It also looks like you skipped reading our CONTRIBUTING.md, which explains exactly how to participate. No worries, it happens to the best of us. Give it a read, and youβll discover the ancient wisdom of assigning issues to yourself. Trust me, itβs worth it. π
/assign-me
π Hey @sfahaddev, 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 there is not a (draft) pull request within 14 days (by 04 April 2025).
/assign me
β οΈ Issue Already Assigned
Hi @pranav0510s, this issue is currently assigned to @sfahaddev.
[!NOTE] If no progress is made within 14 days, the issue will be automatically unassigned.
Options for contributors
- Wait for availability: The issue may become available if auto-unassigned
- Collaborate: You can ask the assignee if they want help
- Maintainer assistance: A maintainer can add you as co-assignee if appropriate
/assign-me
β οΈ Assignment Limit Reached
Hi @jenilpatel264, you've reached the maximum number of 3 concurrent assignments.
[!NOTE] Please complete or unassign from your current issues before taking on new ones.
Current options
- Complete one of your assigned issues and close it
- Use
/unassign-meon an issue you're no longer working on - Ask a maintainer for an exception if this is a special case
/assign-me
π Hey @jenilpatel264, 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.
For questions on JabRef functionality and the code base, you can consult the JabRef Guru or ask on our Gitter chat.
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! π
β° Assignment Reminder
Hi @jenilpatel264, this is a friendly reminder about your assignment to this issue.
[!WARNING] This issue will be automatically unassigned in 11 days if there's no activity.
Remember that you can ask the JabRef Guru or DeepWiki about anything regarding JabRef. Additionally, our contributing guide has hints on creating a pull request and a link to our Gitter chat.
How to keep your assignment
If you are working on it, you can prevent automatic unassignment by:
- Submitting a draft pull request with your progress within 11 days
- Asking for the π Pinned label if you need more time
We appreciate your contribution and are here to help if needed!
We think that this issue was fixed. Please head to https://builds.jabref.org/main to download a development build and try it out.
For any feedback, add a comment to the pull request at https://github.com/JabRef/jabref/pull/13337.
Should we keep this issue open? Or a refined one is needed (ref. https://github.com/JabRef/jabref/pull/13337#pullrequestreview-2938191896)? @koppor
Reopened, the referring pr was just making the error message more clear but maybe did not fix the issue itself. Further testing and investigation required