【发布时间】:2020-04-21 13:33:08
【问题描述】:
请注意,我对 Ubuntu 服务器和 linux 很陌生。
我有一个 java 脚本,它从一个 url 下载一个 xml 文件并将其导入我的数据库。它在我的本地机器上运行良好,但在将其上传到我的 vps(使用 ubuntu 18.04 和 Tomcat)后,运行脚本时出现以下错误:
java.nio.file.AccessDeniedException: f1e4485c8f9fed7e4af0672c5f8bd0d0.xml
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90) ~[na:na]
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111) ~[na:na]
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116) ~[na:na]
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219) ~[na:na]
at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:478) ~[na:na]
at java.base/java.nio.file.Files.newOutputStream(Files.java:219) ~[na:na]
at java.base/java.nio.file.Files.copy(Files.java:3066) ~[na:na]
at com.keuzestress.api.keuzestressapi.resource.xml.CoolblueImport.doImport(CoolblueImport.java:53) ~[classes/:0.0.1-SNAPSHOT]
at com.keuzestress.api.keuzestressapi.resource.xml.CoolblueImport$$FastClassBySpringCGLIB$$de9a1a6.invoke(<generated>) ~[classes/:0.0.1-SNAPSHOT]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
...
我很清楚存在某种权限问题。我不知道文件保存在哪里。我尝试检查 tomcat 子文件夹,但找不到我应该给哪个文件夹适当的权限。
java 导入脚本:
@Component
public class CoolblueImport implements importInterface{
public List<CoolblueProduct> coolblueProductList = new ArrayList<>();
public List<Product> productList = new ArrayList<>();
String url = "http://feeds.performancehorizon.com/.../f1e4485c8f9fed7e4af0672c5f8bd0d0.xml";
Logger logger = LoggerFactory.getLogger(CoolblueImport.class);
@Autowired
ProductRepository productRepository;
@Transactional
public List<Product> doImport() throws ParserConfigurationException, IOException, SAXException {
coolblueProductList.clear();
InputStream in = new URL(url).openStream();
Files.copy(in, Paths.get("f1e4485c8f9fed7e4af0672c5f8bd0d0.xml"), StandardCopyOption.REPLACE_EXISTING);
File file = new File("f1e4485c8f9fed7e4af0672c5f8bd0d0.xml");
...
提前致谢!欢迎任何帮助:)
【问题讨论】:
-
另请参阅How to allow Tomcat war app to write in folder,了解在 Debian 安装中读取/写入任意文件夹的信息,而不仅仅是
java.io.tmpdir
标签: java linux ubuntu tomcat permissions