You are not logged in.

#1 2014-12-10 16:06:53

hoschi
Member
From: Ulm (Germany)
Registered: 2008-11-03
Posts: 476

[Workaround] NetBeans doesn't use keyring (Seahorse)

Hello!

On my machine NetBeans-8.0.2 doesn't use the keyring provided by GNOME, in this case Seahorse. So NetBeans falls back to it own internal Master-Keyring for Subversion, Tomcat and so on which is annoying. The FAQ tells me to set "-J-Dorg.netbeans.modules.keyring.level=FINE" in etc/netbeans.conf. So I created the file ~/.netbeans/etc/netbeans.conf and also  ~/.netbeans/8.0.2/etc/netbeans.conf and inserted the line from above.

I get this log from /~/.netbeans/8.0.2/var/log/messages.log:

WARNING [org.netbeans.modules.keyring.fallback.MasterPasswordEncryption]: Falling back to master password encryption; add -J-Dorg.netbeans.modules.keyring.level=0 to netbeans.conf to see why native keyrings could not be loaded
INFO [org.netbeans.modules.uihandler.Installer]: findIdentity: 1fbf4a2d-62ef-430d-946a-584bc30ae790_201fed02-e53a-4061-a196-8ee2fa70dab5
INFO [org.netbeans.modules.uihandler.Installer]
org.netbeans.modules.uihandler.Installer$ResponseException: Forbidden
	at org.netbeans.modules.uihandler.Installer.uLogs(Installer.java:1410)
	at org.netbeans.modules.uihandler.Installer.uploadLogs(Installer.java:1221)
	at org.netbeans.modules.uihandler.Installer.access$1600(Installer.java:122)
[catch] at org.netbeans.modules.uihandler.Installer$Submit.uploadAndPost(Installer.java:2146)
	at org.netbeans.modules.uihandler.Installer$Submit.access$1400(Installer.java:1653)
	at org.netbeans.modules.uihandler.Installer$Submit$1$2.run(Installer.java:2046)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1423)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
Diagnostic information
Input arguments:
	-Djdk.home=/usr/lib/jvm/default
	-Dnetbeans.default_userdir_root=/home/peter/.netbeans
	-Dnetbeans.running.environment=gnome
	-Dnetbeans.dirs=/usr/share/netbeans/nb:/usr/share/netbeans/ergonomics:/usr/share/netbeans/ide:/usr/share/netbeans/extide:/usr/share/netbeans/java:/usr/share/netbeans/apisupport:/usr/share/netbeans/webcommon:/usr/share/netbeans/websvccommon:/usr/share/netbeans/enterprise:/usr/share/netbeans/mobility:/usr/share/netbeans/profiler:/usr/share/netbeans/python:/usr/share/netbeans/php:/usr/share/netbeans/identity:/usr/share/netbeans/harness:/usr/share/netbeans/cnd:/usr/share/netbeans/dlight:/usr/share/netbeans/groovy:/usr/share/netbeans/extra:/usr/share/netbeans/javacard:/usr/share/netbeans/javafx:
	-Dnetbeans.home=/usr/share/netbeans/platform
	-Dnetbeans.importclass=org.netbeans.upgrade.AutoUpgrade
	-Dnetbeans.accept_license_class=org.netbeans.license.AcceptLicense
	-Xmx1024m
	-Xss2m
	-Xms32m
	-XX:PermSize=32m
	-Dapple.laf.useScreenMenuBar=true
	-Dapple.awt.graphics.UseQuartz=true
	-Dsun.java2d.noddraw=true
	-Dsun.java2d.dpiaware=true
	-Dsun.zip.disableMemoryMapping=true
	-XX:+HeapDumpOnOutOfMemoryError
	-XX:HeapDumpPath=/home/peter/.netbeans/8.0.2/var/log/heapdump.hprof
Compiler: HotSpot 64-Bit Tiered Compilers
Heap memory usage: initial 32.0MB maximum 910.5MB
Non heap memory usage: initial 2.4MB maximum -1b
Garbage collector: PS Scavenge (Collections=22 Total time spent=0s)
Garbage collector: PS MarkSweep (Collections=4 Total time spent=0s)
Classes: loaded=11146 total loaded=11147 unloaded 1

So it instructs me to add "-J-Dorg.netbeans.modules.keyring.level=0" which is at least awkward, I'm pretty sure "0" and "FINE" are the same. The ResponseException seem also not to be releated to my issue. Any ideas? What is going wrong? Seahorse is of course installed and im use a standard GNOME3-Environment. If I create a blank new user and launch NetBeans, it also fails to access the keyring of Seahorse.

Thank You
PS: I want to see if other are also struggling with this.

Last edited by hoschi (2014-12-10 17:47:27)

Offline

#2 2014-12-10 16:35:20

hoschi
Member
From: Ulm (Germany)
Registered: 2008-11-03
Posts: 476

Re: [Workaround] NetBeans doesn't use keyring (Seahorse)

Got it!

The correct path to netbeans.conf is ~/.netbeans/8.0.2/etc/netbeans.conf and the settings inside override the default netbeans.conf, so you to override the variable netbeans_default_options:

netbeans_default_options="-J-client -J-Xss2m -J-Xms32m -J-XX:PermSize=32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dorg.netbeans.modules.keyring.level=0"

And here is the result from messages log:

FINEST [org.netbeans.modules.keyring]: reading: versioning.subversion.svn://svn.foo.bar.com
FINE [org.netbeans.modules.keyring.kde.KWalletProvider]: executing [qdbus, org.kde.kwalletd, /modules/kwalletd, org.kde.KWallet.isEnabled]
FINE [org.netbeans.modules.keyring.kde.KWalletProvider]: exception thrown while invoking the command "[qdbus, org.kde.kwalletd, /modules/kwalletd, org.kde.KWallet.isEnabled]"
java.io.IOException: error=2, No such file or directory
	at java.lang.UNIXProcess.forkAndExec(Native Method)
	at java.lang.UNIXProcess.<init>(UNIXProcess.java:187)
	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
Caused: java.io.IOException: Cannot run program "qdbus": error=2, No such file or directory
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at java.lang.Runtime.exec(Runtime.java:485)
[catch] at org.netbeans.modules.keyring.kde.KWalletProvider.runCommand(KWalletProvider.java:180)
	at org.netbeans.modules.keyring.kde.KWalletProvider.enabled(KWalletProvider.java:75)
	at org.netbeans.api.keyring.Keyring.provider(Keyring.java:90)
	at org.netbeans.api.keyring.Keyring.readImpl(Keyring.java:105)
	at org.netbeans.api.keyring.Keyring.access$100(Keyring.java:75)
	at org.netbeans.api.keyring.Keyring$1.call(Keyring.java:128)
	at org.netbeans.api.keyring.Keyring$1.call(Keyring.java:125)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1423)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
FINE [org.netbeans.modules.keyring.gnome.GnomeProvider]: no GNOME_KEYRING_* environment variable set
FINE [org.netbeans.modules.keyring.win32.Win32Protect]: not running on Windows
FINE [org.netbeans.modules.keyring.utils.Utils]: chmod go-r /home/peter/.netbeans/8.0.2/config/Preferences/org/netbeans/modules/keyring.properties
WARNING [org.netbeans.modules.keyring.fallback.MasterPasswordEncryption]: Falling back to master password encryption; add -J-Dorg.netbeans.modules.keyring.level=0 to netbeans.conf to see why native keyrings could not be loaded
FINE [org.netbeans.modules.keyring.utils.Utils]: no such file to chmod: /home/peter/.netbeans/8.0.2/config/Preferences/org/netbeans/modules/keyring/general.properties

Offline

#3 2014-12-10 17:50:59

hoschi
Member
From: Ulm (Germany)
Registered: 2008-11-03
Posts: 476

Re: [Workaround] NetBeans doesn't use keyring (Seahorse)

http://opensourcejavaphp.net/java/netbe … .java.html

        boolean envVarSet = false;
        for (String key : System.getenv().keySet()) {
            if (key.startsWith("GNOME_KEYRING_")) { // NOI18N
                envVarSet = true;
                break;
            }
        }
        if (!envVarSet) {
            LOG.fine("no GNOME_KEYRING_* environment variable set");
            return false;
        }

That looks like a sanity check, if they would use their imaginary evironment variable. The actual implementation, a few lines later, uses an interface to native code and doesn't care about enviroment variables.
Workaround: $ export GNOME_KEYRING_=foobarbaz
$ netbeans

And the keyring works roll
I will open a bug and ask them to remove that stuff...

// edit
https://netbeans.org/bugzilla/show_bug.cgi?id=249287

Last edited by hoschi (2014-12-11 10:30:10)

Offline

Board footer

Powered by FluxBB