System checker fails on MacOS Big Sur with "Java is not reachable" - cytoscape

I'm having trouble running Cytoscape 3.9.1 on MacOS Big Sur. The system checker fails with the following:
############# Cytoscape System Requirements Checker for Mac ##############
Target Cytoscape version: 3.9.0
Your shell is bash
Compatible OS version found: 11.6
- Pass: OS Version = 11.6.1
- Pass: Following Oracle JDK found:
/Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk
Fail: Java is not reachable.
Try re-installing Java 11.
I have Java 11 installed at the location shown in the output, and it seems fine:
$ /Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk/Contents/Home/bin/java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)
Permissions look right (these are the same all the way up the directory hierarchy):
$ ls -lh /Library/Java/JavaVirtualMachines/jdk-11.0.5.jdk/Contents/Home/bin/
total 6672
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jaotc
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jar
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jarsigner
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 java
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 javac
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 javadoc
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 javap
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jcmd
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jconsole
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jdb
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jdeprscan
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jdeps
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jhsdb
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jimage
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jinfo
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jjs
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jlink
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jmap
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jmod
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jps
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jrunscript
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jshell
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jstack
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jstat
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 jstatd
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 keytool
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 pack200
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 rmic
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 rmid
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 rmiregistry
-rwxr-xr-x 1 root wheel 101K Oct 6 2019 serialver
-rwxr-xr-x 1 root wheel 110K Oct 6 2019 unpack200
I also have several more up-to-date Java versions installed (I'm not sure if these are causing the issue):
$ ls /Library/Java/JavaVirtualMachines/
jdk-10.0.2.jdk jdk-12.0.2.jdk jdk-14.0.1.jdk jdk1.8.0_181.jdk
jdk-11.0.5.jdk jdk-13.0.2.jdk jdk-17.0.1.jdk
The default is JDK17:
$ java -version
java version "17.0.1" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)
If I invoke cytoscape.sh directly from the command line, it appears to be trying to run under Java 8:
$ ./cytoscape.sh
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/cytoscape/launcher/internal/Launcher has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

Cytoscape 3.9.1 will not run on JDK 17. You need to set your JAVA_HOME to point to your JDK 11 installation and things should work.
-- scooter

I had a similar issue with Java. So I'm including my answer here if anyone else has the same issue as me.
First I went here to find out "How to set or change the default Java (JDK) version on macOS?"
From there you should be able to find out the Java version you want to use. Then set your JAVA_HOME variable
Using bash or zsh you can set your JAVA_HOME environment variable like so:
Bash Example
echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 11.0.7)" >> ~/.bash_profile
or in Zsh
echo export "JAVA_HOME=\$(/usr/libexec/java_home -v 11.0.7)" >> ~/.zshrc
Restart terminal after this.
You can check your shell profile and see that this line has now been added to the end of the profile:
nano ~/.bash_profile
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.7.jdk/Contents/Home
You can also check that java is mapped to the desired Java version by default now:
java -version
Running the System Checker Script on Mac should now recognize Java is installed correctly
./mac.sh
Cytoscape should now run by clicking on the cytoscape.sh script

Related

Xcode Unit Tests returns the NSURL of temp folder without 'private keyword'

I am writing Unit Tests in Objective C.
The following is my code:
NSString *testTempDirectory = [NSString stringWithFormat:#"%#%#", NSTemporaryDirectory(), #"DC_Tests"];
NSURL *parentDirURL = [NSURL fileURLWithPath:testTempDirectory];
NSURL *testFolderURL = [NSURL fileURLWithPath:testFolderPath];
Now the path in testFolderURL is returned as
/var/folders/31/2dpztnmx4fzfxb87qtn5_n0wc49pvz/T/DC_Tests/testFolder/
But the original path is
/private/var/folders/31/2dpztnmx4fzfxb87qtn5_n0wc49pvz/T/DC_Tests/testFolder/
The original path is my expected path and since it is different, my assertion is failing.
Any idea as to how do I get the complete path.
Note: I tried absolute string, doesn't help.
Note that in Mac OS, the var folder is actually a linked folder to /private/var
$ ls -l /
total 45
drwxrwxr-x+ 61 root admin 2074 Jun 11 08:58 Applications
drwxr-xr-x+ 63 root wheel 2142 Jul 6 2016 Library
drwxr-xr-x# 2 root wheel 68 Aug 24 2015 Network
drwxr-xr-x# 4 root wheel 136 Jun 9 18:56 System
drwxr-xr-x 6 root admin 204 Apr 22 2016 Users
drwxrwxrwt# 4 root admin 136 Jun 15 09:53 Volumes
drwxr-xr-x# 39 root wheel 1326 Jun 9 18:56 bin
drwxrwxr-t# 2 root admin 68 Aug 24 2015 cores
dr-xr-xr-x 3 root wheel 4312 Jun 9 18:57 dev
lrwxr-xr-x# 1 root wheel 11 Oct 18 2015 etc -> private/etc
dr-xr-xr-x 2 root wheel 1 Jun 9 18:58 home
-rw-r--r--# 1 root wheel 313 Aug 23 2015 installer.failurerequests
dr-xr-xr-x 2 root wheel 1 Jun 9 18:58 net
drwxr-xr-x# 6 root wheel 204 Oct 18 2015 private
drwxr-xr-x# 59 root wheel 2006 Jun 9 18:56 sbin
lrwxr-xr-x# 1 root wheel 11 Oct 18 2015 tmp -> private/tmp
drwxr-xr-x# 13 root wheel 442 Apr 19 2016 usr
lrwxr-xr-x# 1 root wheel 11 Oct 18 2015 var -> private/var
So the simplest way to fix your test is to ignore the /private part from the path. (We had a similar issue with paths that contain the tmp folder on Mac OS as well)

Gradle error when building the android-support-test project

I'm trying to build the Android Support Testing project. I'm following these instructions. I've got my build env setup and I've synced the Repo. When I try to build the project I get this error.
$ pwd
/Volumes/android/android-support-test
$ ls -l
-r--r--r-- 1 me staff 87 Feb 5 12:56 Makefile
-rw-r--r-- 1 me staff 749 Feb 5 16:14 android-support-test.iml
drwxr-xr-x 11 me staff 374 Feb 5 12:56 build
lrwxr-xr-x 1 me staff 31 Feb 5 12:57 build.gradle -> frameworks/testing/build.gradle
drwxr-xr-x 16 me staff 544 Feb 5 12:57 external
drwxr-xr-x 4 me staff 136 Feb 5 12:57 frameworks
drwxr-xr-x 3 me staff 102 Feb 5 16:14 gradle
-r-xr-xr-x 1 me staff 5884 Feb 5 12:57 gradlew
lrwxr-xr-x 1 me staff 35 Feb 5 12:57 local.properties -> frameworks/testing/local.properties
drwxr-xr-x 3 me staff 102 Feb 5 16:17 out
drwxr-xr-x 7 me staff 238 Feb 5 12:57 prebuilts
lrwxr-xr-x 1 me staff 34 Feb 5 12:57 settings.gradle -> frameworks/testing/settings.gradle
$ ./gradlew assembleDebug
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: http://gradle.org/docs/2.5/userguide/gradle_daemon.html.
Configuration on demand is an incubating feature.
FAILURE: Build failed with an exception.
* Where:
Build file '/Volumes/android/android-support-test/frameworks/testing/build.gradle' line: 16
* What went wrong:
A problem occurred evaluating root project 'android-support-test'.
> Could not read script '/Volumes/android/android-support-test/version.gradle' as it does not exist.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 3.31 secs
The version.gradle file is in /Volumes/android/android-support-test/frameworks/testing but build.gradle is looking for it in /Volumes/android/android-support-test.
I think the aliasing of build.gradle -> frameworks/testing/build.gradle is not working correctly. Am I missing something?
The frameworks/testing Repo project should have contained an additional sym link, but you can just create it yourself:
ln -s frameworks/testing/version.gradle version.gradle
h/t to John Lombardo on the Android Testing Support Library google group

Buck build failing for "events-logs" Gerrit plugin (jar)

I am trying to build Gerrit plugin "events-log" jar ( https://gerrit.googlesource.com/plugins/events-log) via Buck build, but its failing with below error:
root#jenkins-test:~/events-log# ll
drwxr-xr-x 7 root root 4096 Jun 29 13:25 ./
drwxrwxr-x 24 root root 4096 Jun 29 13:22 ../
-rw-r--r-- 1 root root 1017 Jun 29 12:57 BUCK
-rw-r--r-- 1 root root 173 Jun 29 12:57 .buckconfig
drwxr-xr-x 3 root root 4096 Jun 29 13:25 .buckd/
drwxr-xr-x 6 root root 4096 Jun 29 13:05 buck-out/
drwxr-xr-x 8 root root 4096 Jun 29 13:27 .git/
-rw-r--r-- 1 root root 146 Jun 29 12:57 .gitignore
drwxr-xr-x 5 root root 4096 Jun 29 12:57 lib/
drwxr-xr-x 4 root root 4096 Jun 29 12:57 src/
root#jenkins-test:~/events-log# /root/buck/bin/buck build events-log:events-
log
Using buckd.
BUILD FAILED: No build file at events-log/BUCK when resolving target
//events-log:events-log.
Can somebody please tell how to fix it and build the jar.
Thanks
I think I've finally figured it out ...
What I wound up doing is checking out Gerrit and building the events-log plugin in the Gerrit tree.
git clone https://gerrit.googlesource.com/gerrit
cd gerrit
git co v2.11.2
git submodule init
git submodule update
git clone https://gerrit.googlesource.com/plugins/events-log plugins/events-log
buck build plugins/events-log
I'm pretty sure you just want /root/buck/bin/buck build //:events-log. See http://buckbuild.com/concept/build_target.html
Eventually I found src/main/resources/Documentation/build.md, with which I finally succeeded in building events-log:
git clone https://gerrit.googlesource.com/plugins/events-log
git clone https://gerrit.googlesource.com/bucklets
cd events-log
git checkout stable-2.12
ln -s ../bucklets .
ln -s bucklets/buckversion .buckversion
ln -s bucklets/watchmanconfig .watchmanconfig
buck build plugin
This builds buck-out/gen/events-log.jar.
If the version is 2.14 or later, please use bazle to build
And I also try to build v2.13 with buck, you need to modify gerrit_plugin.bucklet which is under bucklets folder
Old content:
target_suffix = ''):
from multiprocessing import cpu_count
from os import path,getcwd
New content:
target_suffix = ''):
with allow_unsafe_import():
from multiprocessing import cpu_count
from os import path,getcwd
Then execute "buck build plugin
Out put:
ruhu#CCM-P700:~/tools/events-log$ buck build plugin
Download http://repo1.maven.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1-sources.jar
Download http://repo1.maven.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar
Download http://repo1.maven.org/maven2/com/google/gerrit/gerrit-plugin-api/2.13/gerrit-plugin-api-2.13.jar
Parsing buck files: finished in 1.3 sec (100%)
Creating action graph: finished in 1.6 sec (100%)
Building: finished in 03:47.3 min (100%) 19/19 jobs, 19 updated, 94.7% cache mis
Total time: 03:50.3 min

idlj parameter invalid argument -td mac?

Im trying to follow a tutorial to do a CORBA assignment.
project
-Client/HelloClient.java
-Server/HelloServer.java
-Hello.idl
I do the first step, trying to compile the IDL (from the project root), and it fails.
$ idlj –td Client –fclient Hello.idl
com.sun.tools.corba.se.idl.InvalidArgument: Invalid argument: –td.
java version "1.8.0_11"
$ ls -l
total 16
drwxr-xr-x 3 juliusskye staff 102 Oct 28 20:14 Client
-rw-r-----# 1 juliusskye staff 85 Oct 28 17:49 Hello.idl
drwxr-xr-x 3 juliusskye staff 102 Oct 28 17:52 Server
-rw-r--r-- 1 juliusskye staff 425 Oct 29 13:45 idljintro.iml
drwxr-xr-x 2 juliusskye staff 68 Oct 29 13:45 src
I found this which says CORBA has problems parsing paths with / in front. But mine doesn't have a /
apparently the Lecturer's instructions were wrong or outdated or the compiler is not fully working but compilation of all files is achieved by
idlj -fall hello.idl

JBoss based rails application cant find activerecord-jdbcmysql-adapter

I have a rails application deployed to jboss as a war packaged using warbler. The application has been working great for a while now.
I am looking to change the rails application so that rails, all gems and their dependencies are vendor'd. To that extent I have it working great and can boot the application locally using mongrel with no issues, and can also build the war with no issues
However when I deploy the war to jboss it fails to load the application successfully saying it cant find activerecord-jdbcmysql-adapter.
2010-10-26 14:20:23,281 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/lmd4]] (main) unable to create shared application instance
org.jruby.rack.RackInitializationException: Please install the jdbcmysql adapter: `gem install activerecord-jdbcmysql-adapter` (no such file to load -- active_record/connection_adapters/jdbcmysql_adapter)
This is what i have done so far:
Make sure config/warble.rb has an entry for activerecord-jdbcmysql-adapter
config.gems += ["activerecord-jdbcmysql-adapter", "jruby-openssl"]
Manually unpacked the war and confirmed the gems are present
WEB-INF/gems/gems
drwxrwxr-x 7 4096 Oct 26 14:14 activerecord-jdbc-adapter-1.0.2-java
drwxrwxr-x 3 4096 Oct 26 14:14 activerecord-jdbcmysql-adapter-1.0.2-java
drwxrwxr-x 3 4096 Oct 26 14:14 bouncy-castle-java-1.5.0145.2
drwxrwxr-x 3 4096 Oct 26 14:14 jdbc-mysql-5.0.4
drwxrwxr-x 4 4096 Oct 26 14:14 jruby-openssl-0.7.1
drwxrwxr-x 7 4096 Oct 26 14:14 rack-1.1.0
WEB-INF/vendor/gems
drwxrwxr-x 7 4096 Oct 26 14:14 activerecord-jdbc-adapter-1.0.2-java
drwxrwxr-x 3 4096 Oct 26 14:14 activerecord-jdbcmysql-adapter-1.0.2-java
drwxrwxr-x 3 4096 Oct 26 14:14 bouncy-castle-java-1.5.0145.2
drwxrwxr-x 5 4096 Oct 26 14:14 fastercsv-1.5.3
drwxrwxr-x 12 4096 Oct 26 14:14 hobo-1.0.1
drwxrwxr-x 7 4096 Oct 26 14:14 hobofields-1.0.1
drwxrwxr-x 4 4096 Oct 26 14:14 hobosupport-1.0.1
drwxrwxr-x 3 4096 Oct 26 14:14 jdbc-mysql-5.0.4
drwxrwxr-x 4 4096 Oct 26 14:14 jruby-openssl-0.7.1
drwxrwxr-x 4 4096 Oct 26 14:14 json-1.4.6-java
drwxrwxr-x 2 4096 Oct 26 14:14 json-jruby-1.4.6-java
drwxrwxr-x 7 4096 Oct 26 14:14 rack-1.1.0
drwxrwxr-x 4 4096 Oct 26 14:14 will_paginate-2.3.15
I dunno what could be causing this but if anyone has any ideas please share?
JBoss 5
Rails 2.3.10
JRuby 1.5
Thanks
Could be a JBoss/JRuby-Rack interaction issue. We've had some reports in the past of this not working due to JBoss' use of VFS in class and resource paths and URLs. You could be tripping on this as well.
Can you try the same war file in Tomcat 6 to isolate JBoss as part of the equation? Then please post a bug at http://kenai.com/jira/browse/JRUBY_RACK or http://bugs.jruby.org/.

Resources