Java-код в порядке в AIX 3.5, сбой в RHEL 7.5: он создает поврежденные файлы DOC, DOCX, XLS, XLSX, но исправные HTML-файлы

#rhel #java #aix

#rhel #java #aix

Вопрос:

У нас есть Java-процесс (см. Ниже) для генерации DOC, DOCX, XLS, XLSX и HTML и сохранения его на наших КОМПЬЮТЕРАХ с Linux. Он хорошо работал на нашей старой машине AIX 3.5; но на нашей новой машине RHEL 7.5 форматы документов Microsoft, проприетарные (DOCX, DOC, XLSX и XLS), которые он выводит, повреждены. HTML-файлы не повреждены.

Я загрузил выходные файлы на ПК с Windows и пытаюсь их открыть; Ошибки исключения говорят, что файлы DOC / DOCX / XLS / XSLX повреждены и не могут быть открыты.

Java-код хорошо работает на старом ПК с Linux. Я предполагаю, что на новом компьютере могут быть какие-то библиотеки или программное обеспечение, которые нам нужно установить.

Ниже приведен мой Java-код (процесс создания файла)

int BUFFER_SIZE = 1024 * 256;

            int bytesRead=0;
           Resultset rs=obj.resultSet();
           DocumentClass = new DocumentClass();
           ByteArrayOutputStream baos  = new ByteArrayOutputStream();
           byte[] buffer = new byte[BUFFER_SIZE];
           BufferedInputStream bis = new BufferedInputStream(rs.getBinaryStream(1));

           try
           {
                bytesRead = bis.read(buffer,0,BUFFER_SIZE);
                while (bytesRead > 0)
                {
                   baos.write(buffer, 0, bytesRead);
                   buffer = new byte[BUFFER_SIZE];
                   bytesRead = bis.read(buffer,0,BUFFER_SIZE);
                }
           }
          catch (IOException io ) 
           {
             System.out.println(io.getMessage());
           } 

           DocumentClass.setFileBody(baos);
           BufferedWriter CreateDoc = new BufferedWriter(new FileWriter("/usr/Test.docx"));
            CreateDoc.write(DocumentClass.getFileBody().toString());
            CreateDoc.close();
  

Комментарии:

1. это влияет только на вид проприетарного формата документа Microsoft (например, Docx, doc, XLSX и XLS)

2. Старый КОМПЬЮТЕР: AIX 3.5

3. Новый КОМПЬЮТЕР: Red Hat Enterprise Linux Server версии 7.5 (Maipo)

4. Sanj , теперь, когда ваши обновления добавлены к вопросу, вы можете нажать «Удалить» после каждого комментария, в котором вы оставили эту информацию, что оставит место для дополнительных комментариев.

5. Используете ли вы ту же версию Java? Возможно, вы используете более новую версию Java на RHEL, которая не поддерживается? Являются ли jars/.class файлы в classpath одинаковы? У вас нет файла журнала? Какой фреймворк / библиотеку вы используете (CreateDoc)?