Apache POI SXSSFWorkbook Невозможно создать лист при автоматическом запуске - PullRequest
0 голосов
/ 17 апреля 2020

Я делаю автоматизацию чтения времени прибытия файла из HDFS и заполнения данных в листе Excel для всех систем и окрашивания времени, если оно перешло пороговое время. Я сделал это с помощью сценария оболочки и java для обработки Excel. вызвал банку в сценарии оболочки. этот сценарий оболочки добавляется в файл StartOftheDay. sh, чтобы запускаться ежедневно в 5:00 из CONTROL-M. Работая автоматически, как описано выше, я получаю ошибку ниже,

java.lang.RuntimeException: java.io.IOException: Permission denied
    at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:662)
    at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:679)
    at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:90)
    at com.excel.ExcelReadWrite.convertCsvToXls(ExcelReadWrite.java:141)
    at com.excel.ExcelReadWrite.main(ExcelReadWrite.java:77)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.io.IOException: Permission denied
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createTempFile(File.java:2024)

фрагмент кода java, вызывающий эту ошибку,

    Workbook workBook = new SXSSFWorkbook();
    sheet = (SXSSFSheet) workBook.createSheet("Sheet1"); -- Here

фрагмент сценария оболочки, из которого вызывается jar

java -jar /CTRLFW/CRR/prd/crr_strata/appl/sourcing/file_watcher/bin/Daily_Run/Scripts/CsvToExcel.jar $RUN_DATE $COLUMN_TO_APPEND

фрагмент сценария оболочки, из которого вышеупомянутый сценарий оболочки вызывается

nohup sh /CTRLFW/CRR/prd/crr_strata/appl/sourcing/file_watcher/bin/Daily_Run/Scripts/Prd_stats.sh $DAILY_STATUS_DATE >> /CTRLFW/CRR/prd/crr_strata/log/file_watcher/Daily_Run/${BATCH_ID}/Prd_stats.${BATCH_ID}.out &

выше сценария оболочки, вызываемого из CONTROL-M ежедневно 5 AM

но если я запускаю вышеуказанную команду из сценария вручную, она работает отлично, как и ожидалось.

помогите мне, как это исправить.

1 Ответ

0 голосов
/ 20 апреля 2020

Я установил эту переменную "java .io.tmpdir" в одну из папок проекта в моем сценарии оболочки перед вызовом Java jar. Он начал работать и нормально работать в течение последних 2 дней

export _JAVA_OPTIONS=-Djava.io.tmpdir=/CTRLFW/CRR/prd/crr_strata/log/file_watcher/Daily_Run/temp/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...