Hello,
In the Linux (Ubuntu) app Files, I can see the .bib file and view it with Text Editor.
But nothing happens when I try to “Open with JabRef” from “Files”.
Then if I copy the .bib file to a local directory (say, ~/Desktop), I can open the file without any problem.
If I then try to write the file to the same Google Drive directory, I get a jabref error message “Could not save file” with the stacktrace below.
Any suggestions would be most appreciated,
Philip
org.jabref.logic.exporter.SaveException: Problems saving: java.io.IOException: Permission denied
at org.jabref@5.9.6000/org.jabref.gui.exporter.SaveDatabaseAction.saveDatabase(Unknown Source)
at org.jabref@5.9.6000/org.jabref.gui.exporter.SaveDatabaseAction.save(Unknown Source)
at org.jabref@5.9.6000/org.jabref.gui.exporter.SaveDatabaseAction.saveAs(Unknown Source)
at org.jabref@5.9.6000/org.jabref.gui.exporter.SaveDatabaseAction.saveAs(Unknown Source)
at java.base/java.util.Optional.ifPresent(Unknown Source)
at org.jabref@5.9.6000/org.jabref.gui.exporter.SaveDatabaseAction.saveAs(Unknown Source)
at org.jabref@5.9.6000/org.jabref.gui.exporter.SaveAction.execute(Unknown Source)
at org.jabref@5.9.6000/org.jabref.gui.actions.JabRefAction.lambda$new$3(Unknown Source)
at org.jabref.merged.module@5.9.6000/org.controlsfx.control.action.Action.handle(Unknown Source)
at org.jabref.merged.module@5.9.6000/org.controlsfx.control.action.Action.handle(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/javafx.event.Event.fireEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/javafx.scene.control.MenuItem.fire(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.doSelect(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.lambda$createChildren$12(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/javafx.event.Event.fireEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/javafx.scene.Scene$MouseHandler.process(Unknown Source)
at org.jabref.merged.module@5.9.6000/javafx.scene.Scene.processMouseEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.glass.ui.View.notifyMouse(Unknown Source)
at org.jabref.merged.module@5.9.6000/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at org.jabref.merged.module@5.9.6000/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException: Permission denied
at java.base/sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
at java.base/sun.nio.ch.FileDispatcherImpl.lock(Unknown Source)
at java.base/sun.nio.ch.FileChannelImpl.lock(Unknown Source)
at java.base/java.nio.channels.FileChannel.lock(Unknown Source)
at org.jabref@5.9.6000/org.jabref.logic.exporter.AtomicFileOutputStream.(Unknown Source)
at org.jabref@5.9.6000/org.jabref.logic.exporter.AtomicFileOutputStream.(Unknown Source)
at org.jabref@5.9.6000/org.jabref.logic.exporter.AtomicFileWriter.(Unknown Source)
… 51 more
I tried with the 5.10 version on the link that you sent and experienced the same problem (stacktrace below, looks similar if not identical).
BTW, I have used jabref for many years with Windows and using a backed up, always accessible R/W location on Google drive has worked fine. Something seems to be different with linux.
Many thanks,
Philip
org.jabref.logic.exporter.SaveException: Problems saving: java.nio.file.FileSystemException: /home/philip/Desktop/jabref_link/test.bib.tmp → /home/philip/Desktop/jabref_link/test.bib: Input/output error
at org.jabref@5.10.1111/org.jabref.gui.exporter.SaveDatabaseAction.saveDatabase(Unknown Source)
at org.jabref@5.10.1111/org.jabref.gui.exporter.SaveDatabaseAction.save(Unknown Source)
at org.jabref@5.10.1111/org.jabref.gui.exporter.SaveDatabaseAction.saveAs(Unknown Source)
at org.jabref@5.10.1111/org.jabref.gui.exporter.SaveDatabaseAction.saveAs(Unknown Source)
at java.base/java.util.Optional.ifPresent(Unknown Source)
at org.jabref@5.10.1111/org.jabref.gui.exporter.SaveDatabaseAction.saveAs(Unknown Source)
at org.jabref@5.10.1111/org.jabref.gui.exporter.SaveAction.execute(Unknown Source)
at org.jabref@5.10.1111/org.jabref.gui.actions.JabRefAction.lambda$new$3(Unknown Source)
at org.jabref.merged.module@5.10.1111/org.controlsfx.control.action.Action.handle(Unknown Source)
at org.jabref.merged.module@5.10.1111/org.controlsfx.control.action.Action.handle(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/javafx.event.Event.fireEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/javafx.scene.control.MenuItem.fire(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.doSelect(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.scene.control.ContextMenuContent$MenuItemContainer.lambda$createChildren$12(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/javafx.event.Event.fireEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/javafx.scene.Scene$MouseHandler.process(Unknown Source)
at org.jabref.merged.module@5.10.1111/javafx.scene.Scene.processMouseEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.glass.ui.View.notifyMouse(Unknown Source)
at org.jabref.merged.module@5.10.1111/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at org.jabref.merged.module@5.10.1111/com.sun.glass.ui.gtk.GtkApplication.lambda$runLoop$11(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.nio.file.FileSystemException: /home/philip/Desktop/jabref_link/test.bib.tmp → /home/philip/Desktop/jabref_link/test.bib: Input/output error
at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.UnixFileSystem.move(Unknown Source)
at java.base/sun.nio.fs.UnixFileSystemProvider.move(Unknown Source)
at java.base/java.nio.file.Files.move(Unknown Source)
at org.jabref@5.10.1111/org.jabref.logic.exporter.AtomicFileOutputStream.close(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.implClose(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.lockedClose(Unknown Source)
at java.base/sun.nio.cs.StreamEncoder.close(Unknown Source)
at java.base/java.io.OutputStreamWriter.close(Unknown Source)
… 51 more
Maybe it is a JabRef problem, but maybe this could be a permissions problem too. Maybe your ubuntu default “files” folder has special permissions and does not work well with Google drive?
If you want to see the the permission of a file you can use ls -l /path/to/file command.
For example
ls -l acroread
-rwxr-xr-x 1 10490 floppy 17242 May 8 2013 acroread
What does this mean ?
First - represents a regular file. It gives you a hint of the type of object it is. It can have following values.
d (directory)
c (character device)
l (symlink)
p (named pipe)
s (socket)
b (block device)
D (door)
- (regular file)
r represents read permission. w represents write permission and x represents executable permission.
First combination of rwx represents permission for the owner .
Second combination of rwx represents permission for the group .
Third combination of rwx represents permission for the other of the file.
Octal notation
Permission of file can also be represented in octal notation.
In octal notation
Read or r is represented by 4,
Write or w is represented by 2
Execute x is represented by 1.
Sum of these three is use to represent the permission.
stat command can be used to view file permission in octal notation
stat -c "%a %n" /path/of/file
For example
stat -c "%a %n" acroread
755 acroread
Here you can see
For owner it is 4+2+1=7 (111 in binary)
For group it is 4+0+1=5 (101 in binary) and
For other it is 4+0+1=5 (101 in binary).
I hope there are no leftover .tmp files lying around in the folder you store your library file (.bib) in. If so, please remove them. Here is explained what they are and why they exist: Automatic Backup (.sav and .bak) and Autosave - JabRef
Also, obviously since something is wrong with storing your library file, please create a backup of your library and store it somewhere save while you experiment.
Actually when I looked more carefully, the development 5.10 had fixed the problem.
Now, when I File | Open library
and expand the “Other Locations” on the left (not initially obvious), I see my google drive account under “Networks”.
Then I can drill down and open (and subsequently save) my .bib file.
The last small issue is that the file is displayed at the tope of the JafRef window in the Google Drive “mangled” file name format. Apparently this can be decoded with the gio command:
@Philip_Warrick Hi, the fix mentioned here was about having errors saving files on a google drive.
For opening, we didn’t change anything recently… So I am wondering a bit.
Which version of JabRef did you use? Snap? Flatpak or the deb?