0

I'm trying to install rJava, an xlsx package dependency, but I'm having issues getting it to work. Every time I run the install.packages function, I get a long output culminating in the error:

"ld: library not found for -lpcre2-8"

What exactly can I do to circumvent this?

relevant info: RStudio 2022.07.2+576 "Spotted Wakerobin" R 4.2.2 "Innocent and Trusting" Java 1.8.0_352 (arm64) "Azul Systems, Inc." - "Zulu 8.66.0.15"

Below are the function call and warnings/error I got in the R console. I noticed several warnings throughout after the "checking" phase.

Function call:

install.packages("rJava",type='source')

Warnings and error:

1 warning generated.
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c arrayc.c -o arrayc.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c callJNI.c -o callJNI.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c callback.c -o callback.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c fields.c -o fields.o
fields.c:91:13: warning: unused variable 'c' [-Wunused-variable]
      char *c = clnam;
            ^
fields.c:149:9: warning: unused variable 'clnam' [-Wunused-variable]
  char *clnam = 0, *detsig = 0;
        ^
2 warnings generated.
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c init.c -o init.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c jri_glue.c -o jri_glue.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c loader.c -o loader.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c otables.c -o otables.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c rJava.c -o rJava.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c registration.c -o registration.o
clang -arch arm64 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I. -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -I/opt/R/arm64/include   -fPIC  -falign-functions=64 -Wall -g -O2  -c tools.c -o tools.o
clang -arch arm64 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/opt/R/arm64/lib -o rJava.so Rglue.o arrayc.o callJNI.o callback.o fields.o init.o jri_glue.o loader.o otables.o rJava.o registration.o tools.o -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
(cd ../jri && make)
make -C src JRI.jar
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/javac -target 1.4 -source 1.4  -d . ../Mutex.java ../RBool.java ../RConsoleOutputStream.java ../REXP.java ../RFactor.java ../RList.java ../RMainLoopCallbacks.java ../RVector.java ../Rengine.java ../package-info.java
warning: [options] bootstrap class path not set in conjunction with -source 1.4
warning: [options] source value 1.4 is obsolete and will be removed in a future release
warning: [options] target value 1.4 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
4 warnings
if [ -n "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/javah" ]; then /Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/javah -d . -classpath . org.rosuda.JRI.Rengine; fi
clang -arch arm64 -c -o Rengine.o Rengine.c -g -Iinclude  -DRIF_HAS_CSTACK -DRIF_HAS_RSIGHAND -DHAVE_CONFIG_H -falign-functions=64 -Wall -g -O2  -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -fno-common -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include 
clang -arch arm64 -c -o jri.o jri.c -g -Iinclude  -DRIF_HAS_CSTACK -DRIF_HAS_RSIGHAND -DHAVE_CONFIG_H -falign-functions=64 -Wall -g -O2  -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -fno-common -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include 
clang -arch arm64 -c -o Rcallbacks.o Rcallbacks.c -g -Iinclude  -DRIF_HAS_CSTACK -DRIF_HAS_RSIGHAND -DHAVE_CONFIG_H -falign-functions=64 -Wall -g -O2  -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -fno-common -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include 
clang -arch arm64 -c -o Rinit.o Rinit.c -g -Iinclude  -DRIF_HAS_CSTACK -DRIF_HAS_RSIGHAND -DHAVE_CONFIG_H -falign-functions=64 -Wall -g -O2  -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -fno-common -I/Library/Frameworks/R.framework/Resources/include -I/Library/Frameworks/R.framework/Resources/include 
clang -arch arm64 -c -o globals.o globals.c -g -Iinclude  -DRIF_HAS_CSTACK -DRIF_HAS_RSIGHAND -DHAVE_CONFIG_H -falign-functions=64 -Wall -g -O2  -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -fno-common -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin 
clang -arch arm64 -c -o rjava.o rjava.c -g -Iinclude  -DRIF_HAS_CSTACK -DRIF_HAS_RSIGHAND -DHAVE_CONFIG_H -falign-functions=64 -Wall -g -O2  -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin  -fno-common -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include -I/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/../include/darwin 
clang -arch arm64 -o libjri.jnilib Rengine.o jri.o Rcallbacks.o Rinit.o globals.o rjava.o  -dynamiclib -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/server -ljvm -L/opt/R/arm64/lib -F/Library/Frameworks/R.framework/.. -framework R -L/opt/R/arm64/lib -lpcre2-8 -llzma -lbz2 -lz -licucore -ldl -lm -liconv 
ld: library not found for -lpcre2-8
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libjri.jnilib] Error 1
make[1]: *** [src/JRI.jar] Error 2
make: *** [jri] Error 2
ERROR: compilation failed for package ‘rJava’
* removing ‘/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rJava’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/rJava’
Warning in install.packages :
  installation of package ‘rJava’ had non-zero exit status

The downloaded source packages are in
    ‘/private/var/folders/bw/15yqlzdd3gbd_r0trwcsy8h40000gn/T/RtmpZj51Iw/downloaded_packages’
  • Are you sure you need the `xlsx` package? Depending on what you are doing, you might want to try [readxl](https://readxl.tidyverse.org/) instead which has no Java dependency. – MrFlick Dec 07 '22 at 20:22
  • I need to be able to write to .xls or .xlsx files, so unfortunately I need to get Java working. – Matt Demelo Dec 07 '22 at 20:27

1 Answers1

0

lpcre2-8 is only needed to compile JRI, if you don't need it, you can use --disable-jri to install rJava without JRI. If you need JRI, either compile pcre2 yourself or download it from https://mac.R-project.org/libs-4/.

Have a look at the raised issue here: https://github.com/s-u/rJava/issues/153

  • There is [no libpcre2-dev package](https://cran.r-project.org/package=libpcre2-dev) on CRAN so you cannot use `install.packages()` to install it. I assume you are talking about the system dependency. Those cannot be installed inside R. Looks like this might be a mac so it would probably be easiest to install via brew. see https://stackoverflow.com/questions/19541066/how-to-install-pcre-development-headers-on-mac-osx – MrFlick Dec 07 '22 at 20:20
  • RStudio 2022.07.2+576 is the latest available desktop version, there is no upgrade past this as far as I can tell. – Matt Demelo Dec 07 '22 at 22:12
  • Also, installing pcre1 and pcre2 via `brew install pcre` and `brew install pcre2` didn't seem to resolve this issue, even after an R session restart. – Matt Demelo Dec 07 '22 at 22:30
  • 1
    @MattDemelo Do you need JRI? if you don't need it, you can use --disable-jri to install rJava without JRI. – Alec Denny Craine Dec 08 '22 at 14:56