You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用maxent.jar时JVM初始化失败,RStudio会话崩溃求助

问题描述

我正在遵循GitHub上John Baums的教程,使用MAXENT方法构建仅存在型物种分布模型。所有代码均能正常运行,直至执行调用Maxent的Java程序maxent.jar的对象me时出现错误。

尝试安装rJava后重新运行代码:

# 安装rJava包
install.packages('rJava')

# 加载rJava库
library(rJava)

安装后再次运行代码,RStudio会话因致命错误中止:

R session Aborted where R encounters a fatal error

复现问题的完整代码:

library(viridis)
library(devtools)
library(dismo)
library(raster)

# 安装rasterVis包
devtools::install_github('oscarperpinan/rasterVis')

# 加载rasterVis库
library(rasterVis)

# 安装rmaxent包
install.packages("remotes")
remotes::install_github("johnbaums/rmaxent")

# 加载rmaxent库
library(rmaxent)

# 导入B. variegatus的分布数据和预测变量数据
occ_file <- system.file('ex/bradypus.csv', package='dismo')
occ <- read.table(occ_file, header=TRUE, sep=',')[,-1]

library(raster)
pred_files <- list.files(system.file('ex', package='dismo'), '\\.grd$', full.names=TRUE )
predictors <- stack(pred_files)

# predictors是包含9个栅格图层的RasterStack,每个图层对应一个模型预测变量
# 使用dismo包的maxent函数拟合模型,该函数会调用Maxent的Java程序maxent.jar
me <- maxent(predictors, occ, factors='biome', args=c('hinge=false', 'threshold=false'))

最终触发的错误信息:

Loading required namespace: rJava
JVMJ9VM015W Initialization error for library j9gc29(2): Failed to instantiate compressed references metadata.  200M requested
Error in .jinit(parameters = parameters) : 
  Cannot create Java virtual machine (-4)
解决方案

错误核心是JVM初始化时无法分配足够内存用于压缩引用元数据,以下是几种可行的解决办法:

  • 调整rJava的JVM内存参数
    在加载rJava前手动设置JVM参数,调整压缩类空间或堆内存大小,适配机器内存情况:

    # 先设置JVM参数,再加载rJava
    options(java.parameters = "-Xmx512m -XX:CompressedClassSpaceSize=128m")
    library(rJava)
    

    其中-Xmx控制最大堆内存,-XX:CompressedClassSpaceSize调整压缩类空间大小,可根据实际情况修改数值。

  • 确保R与Java版本匹配
    检查R的位数(32位/64位),安装同位数的Java版本;优先选择OpenJDK,部分版本兼容性优于Oracle JDK。

  • 重置rJava配置
    若存在配置冲突,尝试卸载重装rJava并重新配置:

    # 卸载并重装rJava
    remove.packages("rJava")
    install.packages("rJava", type = "source")
    # 加载时指定内存参数
    options(java.parameters = "-Xmx1g")
    library(rJava)
    
  • 绕过rJava直接调用maxent.jar
    如果rJava问题无法解决,可直接用系统命令调用外部的maxent.jar:

    # 导出数据为Maxent兼容格式
    write.csv(occ, "occurrences.csv", row.names = FALSE)
    writeRaster(predictors, "predictors.tif", overwrite = TRUE)
    # 调用maxent.jar(需确保文件在当前工作目录)
    system("java -Xmx1g -jar maxent.jar occurrences.csv predictors.tif output_dir --hinge=false --threshold=false")
    

内容的提问来源于stack exchange,提问作者Alice Hobbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:25:26