不容易在一句话中总结这个问题…
我有一个在Java 6上运行的Tomcat 7上的Web应用程序。该应用程序访问Excel工作表使用JACOB,它使用JNI和COM,启动一个单独的Excel进程。 为了确保Excel工作表是可变的,我的Java进程使用File.createTempFile()创build原始XLS的副本,并将临时文件传递给Excel进程。
OS是Windows Server 2008. Excel版本来自Office 2010。
我的问题:只要Tomcat是从命令行或者从IDE开始交互式启动的,一切正常。 如果我启动Tomcat作为服务(使用默认用户SYstem),Excel无法打开临时文件,并说:
如何使用nmake的C + +项目
通过C#显示“设备和打印机”窗口?
在MS Windows上安装Django,manage.py“无法导入Django”
C ++确定是否有声音完成播放
Python:可以使用py2exe编译的脚本冻结操作系统吗?
com.jacob.com.ComFailException: Invoke of: Open Source: Microsoft Excel Description: Microsoft Excel kann auf die Datei 'C:Program Filesapache-tomcattempEntwickl-Auftr-Bez-n-Maß 54-131 215-2 Optimierung 210-0 210-3.xlsx6119727457676255726.clone' nicht zugreifen. Dies kann mehrere Gründe haben: • Der Name des Dokuments oder der Pfad ist nicht vorhanden. • Das Dokument wird von einem anderen Programm verwendet. • Der Name der Arbeitsmappe,die gespeichert werden soll,ist identisch zu dem Namen eines anderen Dokuments,welches schreibgeschützt ist. com.jacob.com.dispatch.invokev(Native Method) com.jacob.com.dispatch.invokev(UnkNown Source) com.jacob.com.dispatch.callN(UnkNown Source) com.jacob.com.dispatch.call(UnkNown Source) de.insites.ms.com.xls.Workbook.<init>(UnkNown Source) de.insites.ms.com.xls.Excel.openWorkbook(UnkNown Source) de.harti.harticalc.excel.MahanoExcel.<init>(UnkNown Source) de.harti.harticalc.excel.MahanoExcel.create(UnkNown Source) de.harti.harticalc.excel.ExcelProcessor.getExcel(UnkNown Source) de.harti.harticalc.excel.ExcelProcessor.calculatePosition(UnkNown Source) de.harti.mahano.service.PositionServlet.doGet(UnkNown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) de.harti.mahano.service.AbstractMahaNowsServlet.service(UnkNown Source) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) de.harti.mahano.service.CharsetFilter.doFilter(UnkNown Source)
德语信息意味着Excel无法访问该文件,因为该文件不存在,被另一个进程locking或以某种方式写入locking。
我validation了文件存在,它是一个可读的Excel文档(我可以使用Excel交互式地打开它)。
我的猜测是,Windows拒绝EXCELsubprocess访问我的文件,因为它是由它不信任的java进程创build的。
当Tomcat作为Windows服务运行时,如何让Excel访问该文件?
编辑 :exception消息的英文版本
ERROR - Invoke of: Open Source: Microsoft Office Excel Description: Microsoft Office Excel cannot access the file 'c:marchenamarchena10workmarchenabatch_58288inputcontent_1.xlsx'. There are several possible reasons: ? The file name or path does not exist. ? The file is being used by another program. ? The workbook you are trying to save has the same name as a currently open workbook.
解决scheme在这里find解决scheme 我不得不创build文件夹
C:WindowsSysWOW64configsystemprofileDesktop
manualy。 似乎在Windows Server 2008上,当以SYstem身份运行时,Excel需要此文件夹,但如果缺less,则不会创build。
感谢您的提示。
如何通过Java中的telnet执行open命令?
使用.NET发送电子邮件 – 并不容易
自定义窗口devise
如何在使用C ++中的SendMessage的应用程序之间传递string
C: WINDOWS Syswow64资料 CONfig systemprofile 桌面
manualy。 似乎在Windows server 2008上,Excel作为SYstem运行时需要此文件夹,但如果缺失则不会创建它。
感谢您的提示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。