大约 11 年前,我开发了一个 Java POS 系统,目前仍在 Windows XP 和 Vista 机器上运行。我正在将它们更新到 Windows 7,现在在 Star Micronics 热敏收据打印机上打印时遇到问题。
这是在 Windows XP 和 Vista 机器上访问网络上其他机器上的共享打印机时运行良好的代码行,但我得到一个 java.io.FileNotFoundException(拒绝访问)
当我尝试在连接到 Windows 7 盒子的打印机上打印时。
FileOutputStream fos = new FileOutputStream("\\\\machine1\\printer");
现在在这种情况下,machine2(无论是 Windows XP、Vista 还是 7)正尝试通过我的 Java 程序在 machine1 (Windows 7) 连接的收据打印机上打印。如果我尝试从 machine1 上的 machine2 的记事本打印普通文本文件,它工作正常。只有通过我在上面提到的行上的 Java 才会失败。如果 machine1 和 machine2 是 Windows XP 或 Vista,则没有问题,并且已经工作了 11 年。
我相信这一定是 Windows 7 的权限问题,但我不确定它是什么。请记住,第二台机器可以看到 Windows 7 机器上的打印机,甚至可以在上面打印。只有通过我的 java 程序才能失败。我可以尝试重写有关打印方式的旧代码,但我担心会遇到类似的问题。
有什么建议吗?
最佳答案
我今天遇到了同样的问题,在升级到拥有 Windows XP 计算机且可以打印的人之后,升级到 Windows 7 计算机。我什至无法“回显测试 >\machine1\GenericT”,得到拒绝访问。
我发现您需要为位于“C:\Windows\System32\spool\PRINTERS”中的打印机文件夹提供安全访问权限,您应该添加“Everyone”并对其进行修改。这是你将能够打印没问题。
关于Java 访问拒绝打印到 Windows 7 上的收据打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097644/