Вы можете использовать оператор &
. Вот исходный код:
#include<stdio.h>
#include<stdlib.h>
int main(){
int a[10];
int *p;
printf("%p\n", (void *)a);
printf("%p\n", (void *)(&a+1));
printf("---- diff----\n");
printf("%zu\n", sizeof(a[0]));
printf("The size of array a is %zu\n", ((char *)(&a+1)-(char *)a)/(sizeof(a[0])));
return 0;
};
Вот пример вывода
1549216672
1549216712
---- diff----
4
The size of array a is 10
У меня была такая же проблема, и я прошел те же шаги, что и вы. Последним шагом для запуска RStudio через Finder / Spotlight было подключение libjvm.dylib к / usr / local / lib:
sudo ln -f -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
-f
флаг добавлен, чтобы принудительно перезаписать существующий файл / ссылку
Эта строка ниже решила ту же проблему, с которой я столкнулся с пакетом rJava
, как это делали некоторые другие в этом обсуждении. Я уверен, что есть несколько решений этой проблемы, и я искренне благодарю их всех за их вклад, потому что иногда одна строка, подобная приведенной ниже, экономит много времени, чтобы отправиться в мусор!
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Проверьте расположение файла libjvm.dylib.
Попробуйте это, в моем случае это сработало:
dyn.load('/Library/Java/JavaVirtualMachines/jdk-10.jdk/Contents/Home/lib/server/libjvm.dylib')
library(rJava)
В macOS High Sierra (10.13.1) и Java версии 9 вам нужно использовать несколько другой путь JVM (обратите внимание на недостающую папку jre
в пути по сравнению с инструкциями для более ранних версий Java):
sudo ln -f -s $(/usr/libexec/java_home)/lib/server/libjvm.dylib /usr/local/lib
Вы также должны уведомить R о JVM:
ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
Проблема с отсутствием изображения существует с совершенно новой установкой на OSX High Sierra с последней версией Java SE 10 JDK.
Я смог решить проблему с rJava, используя исправление, найденное на rJava Github задает страницу: https://github.com/su/rJava/issues/78
R CMD javareconf JAVA_CPPFLAGS = -I / System / Library / Frameworks / JavaVM. рамки / заголовки
Так я правильно настроил его на двух Mac, работающих под управлением Mac OS X El Capitan (10.11.6):
Rscript -e 'remove.packages("rJava")'
sudo Rscript -e 'remove.packages("rJava")'
/Users/<userid>/.bashrc
, используя ваш любимый редактор: # Set JAVA_HOME so rJava package can find it
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)/jre
.bashrc
). sudo ln -sf $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
sudo Rscript -e 'install.packages("rJava", repos="http://rforge.net", type="source")'
Здесь вы можете скачать унаследованную версию Java версии 6 для El Capitan: https://support.apple.com/kb/DL1572?viewlocale=en_US&locale=en_US После этого rJava пакет работает для меня.
Вы должны иметь возможность использовать CRAN rJava без необходимости перекомпилировать rJava или делать какие-либо дополнительные шаги, связывая библиотеку разделов с библиотекой библиотек R.
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /Library/Frameworks/R.framework/Libraries
Здесь, что работало для меня в MAC:
~/.profile
или ~/.bashrc
, добавьте эту строку: %export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home
1.1 % source .profile
(или % source .bashrc
) % sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
remove.packages(rJava)
remove.packages(Rweka)
%sudo R CMD javareconf
install.packages("rJava", dependencies = TRUE, type = "source")
install.packages("rJava", dependencies = TRUE, type = "source")
library("rJava", "RWeka")
Желаем удачи.
В OSX El Capitan 10.11 у пользователя нет разрешения на запись в / usr / lib. Вместо этого используйте следующую команду:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
Запустите в командной строке следующее: sudo R CMD javareconf
Несколько упомянутых выше решений упомянули об этом, но они также предлагают удалить и впоследствии переустановить пакет rJava
. Я обнаружил, что эти дополнительные шаги не нужны.
Может быть, еще один простой ответ, который не касается вашей файловой системы:
$ install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/server /Library/Frameworks/R.framework/Versions/3.4/Resources/library/rJava/libs/rJava.so
(замените jdk1.8.0_131.jdk
на ваш путь JDK.)
install_name_tool -add_rpath /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/server /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so
. Я был в состоянии видеть, что rpath отсутствовал с otool -l /usr/local/lib/R/3.3/site-library/rJava/libs/rJava.so | grep LC_RPATH
– Ian
5 June 2017 в 18:19
Выполняется следующая команда:
sudo ln -s $(/usr/libexec/java_home)/jre/lib/server/libjvm.dylib /usr/local/lib
После этого в RStudio загрузка rJava выполняется через загрузку пакета «xlsx».
library("xlsx")
P.S. # 1 Окружающая среда: Mac OS X El Capitan 10.11.3+ с RStudio 0.99.491+ и R 3.2.3+. (Я тестировал это также на macOS Sierra (10.12) и R.3.3.1.)
P.S. # 2 Я нахожу, что openxlsx
работает намного быстрее и не полагается на работу Java, поэтому теперь я использую этот пакет. Надежда, которая помогает другим.
Вот несколько простых шагов для этого:
libjvm.dylib
с /usr/local/lib
заставило его также начать :)
– jonalv
14 November 2016 в 16:58
Вы можете загрузить libjvm.dylib явно, запустив, как
dyn.load('/Library/Java/JavaVirtualMachines/jdk1.8.0_66.jdk/Contents/Home/jre/lib/server/libjvm.dylib')
library(rJava)
+1
за предложение альтернативы.
– thiagoveloso
19 July 2017 в 08:35
cannot jfindclass[[1]]
, которая может исходить от rJava и драйвера JDBC – Jenks 31 January 2017 в 21:39/usr/local/lib/libjvm.dylib
, так как / usr / local / lib / не похоже на @rpath. Например:ln -s /usr/local/lib/libjvm.dylib /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/
– Dave X 2 November 2017 в 15:23