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

Shiny应用本地正常,部署至shinyapps.io遇.jcheck Java异常错误

问题

本地开发的Shiny应用运行正常,但部署到shinyapps.io平台时出现错误:Error in .jcheck: Java Exception <no description because toString() failed>。该应用通过RJDBC连接数据库获取数据,本地R环境的sessionInfo()信息如下,且rJava::.jinit()返回值为0:

> sessionInfo()
R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.utf8  LC_CTYPE=English_United States.utf8   
[3] LC_MONETARY=English_United States.utf8 LC_NUMERIC=C                          
[5] LC_TIME=English_United States.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] rsconnect_0.8.29   DT_0.26            plotly_4.10.1      ggplot2_3.4.0     
 [5] gridExtra_2.3      RJDBC_0.2-10       rJava_1.0-6        DBI_1.1.3         
 [9] openxlsx_4.2.5.1   purrr_1.0.0        lubridate_1.9.0    timechange_0.1.1  
[13] tidyr_1.2.1        dplyr_1.0.10       shiny_1.7.4       

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.9         assertthat_0.2.1   digest_0.6.31      packrat_0.9.0     
 [5] utf8_1.2.2         mime_0.12          R6_2.5.1           httr_1.4.4        
 [9] pillar_1.8.1       rlang_1.0.6        lazyeval_0.2.2     curl_4.3.3        
[13] fontawesome_0.4.0  rstudioapi_0.14    data.table_1.14.6  jquerylib_0.1.4   
[17] htmlwidgets_1.6.0  munsell_0.5.0      compiler_4.2.2     httpuv_1.6.7      
[21] pkgconfig_2.0.3    askpass_1.1        htmltools_0.5.4    openssl_2.0.5     
[25] tidyselect_1.2.0   tibble_3.1.8       fansi_1.0.3        viridisLite_0.4.1 
[29] withr_2.5.0        later_1.3.0        grid_4.2.2         jsonlite_1.8.4    
[33] xtable_1.8-4       gtable_0.3.1       lifecycle_1.0.3    magrittr_2.0.3    
[37] scales_1.2.1       zip_2.2.2          cli_3.5.0          stringi_1.7.8     
[41] cachem_1.0.6       promises_1.2.0.1   bslib_0.4.2        ellipsis_0.3.2    
[45] generics_0.1.3     vctrs_0.5.1        tools_4.2.2        glue_1.6.2        
[49] crosstalk_1.2.0    fastmap_1.1.0      yaml_2.3.6         colorspace_2.0-3  
[53] memoise_2.0.1      sass_0.4.4
解决方案

针对本地正常但部署到shinyapps.io出现Java异常的问题,可从以下几个方向排查解决:

  • Java环境与驱动兼容性问题
    shinyapps.io运行在Linux环境,本地是Windows,两者Java版本、架构(32/64位)可能存在差异,导致JDBC驱动无法正常加载。

    • 解决:在应用开头添加Java参数配置,比如options(java.parameters = "-Xmx1024m");确保使用跨平台的JDBC驱动jar包,且驱动版本与服务器Java环境兼容。
  • JDBC驱动未随应用部署
    本地驱动文件存放在本地路径,部署时未将驱动jar包上传到shinyapps.io服务器,导致RJDBC无法找到驱动类。

    • 解决:将JDBC驱动jar包放在Shiny应用的根目录下,使用相对路径加载驱动,示例代码:
      library(RJDBC)
      drv <- JDBC(driverClass = "com.mysql.cj.jdbc.Driver", classPath = "./mysql-connector-java-8.0.30.jar")
      

    同时确保rsconnect部署时包含该jar文件,可通过rsconnect::deployApp()上传整个应用目录。

  • rJava初始化与R版本匹配问题
    shinyapps.io上的rJava可能未正确初始化,或服务器R版本与本地不一致(本地为4.2.2),导致Java交互失败。

    • 解决:在应用启动时显式初始化rJava:library(rJava); .jinit();通过renv锁定R版本和依赖包版本,或在rsconnect设置中指定R版本为4.2.2。
  • 数据库连接权限与配置问题
    数据库服务器可能未开放shinyapps.io的IP段访问权限,或连接字符串中的地址、端口、凭证在部署环境中无效。

    • 解决:检查数据库防火墙设置,允许shinyapps.io的IP范围访问;避免硬编码敏感信息,使用shinyapps.io的环境变量存储数据库用户名、密码等配置,示例:
      db_user <- Sys.getenv("DB_USER")
      db_pass <- Sys.getenv("DB_PASS")
      conn <- dbConnect(drv, "jdbc:mysql://your-db-host:3306/db-name", db_user, db_pass)
      

内容的提问来源于stack exchange,提问作者Fisseha Berhane

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:35:17