XLS выбрасывает исключение java.lang.ClassNotFoundException: org.apache.poi.hssf.util.HSSFColor $ BLACK

У меня возникают проблемы при попытке открыть файл XLS с помощью Apache POI. Я интегрирую HSSF в приложение для рельсов.

Мой код похож:

require "rjb"

  Rjb::add_jar(File.expand_path('demo/poi-3.9/poi-3.9-20121203.jar'))
  Rjb::add_jar(File.expand_path('demo/poi-3.9/commons-codec-1.7.jar'))

  Black = Rjb::import 'org.apache.poi.hssf.util.HSSFColor$BLACK'
  HSSFCell = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFCell'
  HSSFCellStyle = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFCellStyle'
  HSSFFont = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFFont'
  HSSFWorkbook = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFWorkbook'
  IOUtils = Rjb::import 'org.apache.poi.util.IOUtils'
  JavaFont = Rjb::import 'java.awt.Font'
  FileInputStream = Rjb::import 'java.io.FileInputStream'
  FileOutputStream = Rjb::import 'java.io.FileOutputStream'

def self.export_xls (params)
    file = "tmp/#{Time.now.to_formatted_s(:number)}_#{abc}.xls"
    @book = HSSFWorkbook.new
    @sheet1 = @book.createSheet l(:report_name)
    @drawing = @sheet1.createDrawingPatriarch()
    @number_of_column = 0
    @number_of_column_to_merge = 10
    black = Black.index

    @styleTableTitle = @book.createCellStyle()       
    @styleTableTitle.setBorderBottom(HSSFCellStyle.BORDER_THIN)
    @styleTableTitle.setBottomBorderColor(black)

    out = FileOutputStream.new("#{Rails.root}/" + file)
    @book.write(out)
    out.close()
    file
end

Бросок исключения:

RuntimeError (java.lang.ClassNotFoundException: org.apache.poi.hssf.util.HSSFColor$BLACK)

Импортированные jar-файлы (Apache POI):

poi-3.9-20121203 poi-3.7-20101029 commons-codec-1.7

Похоже, проблема со строкой JavaFont = Rjb :: import 'java.awt.Font', попробуйте закомментировать ее и посмотреть, сохраняется ли ошибка, если это не ваша проблема

Mark 27.06.2018 16:49

Почему вы используете такие старые версии Apache POI? Почему вы пытаетесь использовать две разные старые версии одновременно? Что произойдет, если вы остановите это и получите только одну новую банку POI?

Gagravarr 27.06.2018 18:00

Исключение выбрасывается только в продакшене. JavaFont = Rjb :: import 'java.awt.Font' работает нормально.

Rahul2692 29.06.2018 12:25
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
3
1 322
0

Другие вопросы по теме