Estoy tratando de ejecutar un programa java llamado 'Audiveris' con la función shell_exec() de php. Audiveris es una herramienta de código abierto para el reconocimiento óptico de música escrita en java. Puedo llamar y ejecutar pequeños archivos java de prueba que generan una cadena simple con shell_exec(). Sin embargo, cuando intento llamar a Audiveris, aparece un error en el registro de errores de Apache. Aquí está el mensaje de error que recibo.
May 01, 2020 8:21:04 PM sun.awt.shell.Win32ShellFolderManager2 getPersonal WARNING: Cannot access 'Personal' java.io.IOException: Could not get shell folder ID list at sun.awt.shell.Win32ShellFolder2.getFileSystemPath0(Native Method) at sun.awt.shell.Win32ShellFolder2.access$800(Unknown Source) at sun.awt.shell.Win32ShellFolder2$7.call(Unknown Source) at sun.awt.shell.Win32ShellFolder2$7.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source) at java.lang.Thread.run(Unknown Source) May 01, 2020 8:21:04 PM sun.awt.shell.Win32ShellFolderManager2 getDesktop WARNING: Cannot access 'Desktop' java.io.IOException: Could not get shell folder ID list at sun.awt.shell.Win32ShellFolder2.getFileSystemPath0(Native Method) at sun.awt.shell.Win32ShellFolder2.access$800(Unknown Source) at sun.awt.shell.Win32ShellFolder2$7.call(Unknown Source) at sun.awt.shell.Win32ShellFolder2$7.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Exception in thread "main" java.lang.ExceptionInInitializerError at org.audiveris.omr.Main.<clinit>(Main.java:64) at Audiveris.main(Audiveris.java:49) Caused by: java.lang.NullPointerException at org.audiveris.omr.WellKnowns.getFolderForWindows(WellKnowns.java:403) at org.audiveris.omr.WellKnowns.getFolder(WellKnowns.java:302) at org.audiveris.omr.WellKnowns.<clinit>(WellKnowns.java:141) ... 2 moreEsto es lo que estoy usando en shell_exec. Todas las rutas son correctas y $sheet_music_path es simplemente la ruta al pdf de la partitura. Obtuve este comando de los gitbooks de Audiveris y puedo usarlo en el símbolo del sistema sin problemas.
shell_exec('java -cp "Audiveris/lib/*" Audiveris -batch -export '.$sheet_music_path);
Estoy usando Windows 10, jdk8 (requerido por Audiveris), php 7.3.12, apache 2.4.41 y un servidor Wamp. Gracias.