Java System.getProperty(“user.home”)在Tomcat上运行时返回/root

Java System.getProperty(“user.home”)在Tomcat上运行时返回/root,java,tomcat,spring-mvc,system-properties,Java,Tomcat,Spring Mvc,System Properties,我正在Ubuntu中开发我的应用程序。我有一个JavaWebSpringMVC应用程序。因为我有一个控制器。客户端可以上传文件(通过AngularJS发布)。在控制器中,我获取文件并复制到特定位置 这是我的控制器 @RequestMapping(value = "/fileUpload", method = RequestMethod.POST) @ResponseBody public String UploadFile(HttpServletRequest request,HttpServl

我正在Ubuntu中开发我的应用程序。我有一个JavaWebSpringMVC应用程序。因为我有一个控制器。客户端可以上传文件(通过AngularJS发布)。在控制器中,我获取文件并复制到特定位置

这是我的控制器

@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ResponseBody
public String UploadFile(HttpServletRequest request,HttpServletResponse response) {

    SimpleDateFormat sdf = new SimpleDateFormat("MM_dd_yyyy_HHmmss");
    String date = sdf.format(new Date());

    String fileLoc = null;

    MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;

    Iterator<String> itr = mRequest.getFileNames();
    while (itr.hasNext()) {
        MultipartFile mFile = mRequest.getFile(itr.next());
        String fileName = mFile.getOriginalFilename();

        String homePath=System.getProperty("user.home");
        String separator=File.separator;

        fileLoc = homePath + separator + "myapp" + separator + "file-uploads" +
                  separator + date + "_" + fileName;

        System.out.println(fileLoc);
        try {
            File file = new File(fileLoc);

            // If the directory does not exist, create it
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            FileCopyUtils.copy(mFile.getBytes(), file);

        }
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    return fileLoc;
}
我在控制器中添加了一个main方法

public static void main(String[] args) {
    String homePath=System.getProperty("user.home");
    String separator=File.separator;

    System.out.println("Home Path: " + homePath);
    System.out.println("Separator: " + separator);
}
当我把它作为Java应用程序运行时,我得到了正确的输出

Home Path : /home/shiju
Separator : /

为什么它在Tomcat上运行时会给root用户?

如果您使用root用户执行应用程序,那么很明显,
/root/
将在
user.home
属性中返回。

如果您使用root用户执行应用程序,则
/root/
将在
user.home
属性。

tomcat进程在哪个用户下运行?您是以root身份运行tomcat吗?因为tomcat是以root身份运行的,所以错误?您可以粘贴运行tomcat命令行选项吗?tomcat的位置是
/usr/share/tomcat7/apache-tomcat-7.0.42
,我正在用
sudo
启动
startup.sh
。因为没有
sudo
它就不能启动。是因为这个吗?tomcat进程在哪个用户下运行?你是以root用户身份运行tomcat吗?因为tomcat是以root用户身份运行的吗?你能粘贴运行tomcat命令行选项吗?tomcat的位置是
/usr/share/tomcat7/apache-tomcat-7.0.42
,我用
sudo
启动
startup.sh
。因为没有
sudo
它就不能启动。是因为这个吗?是的。我以root身份运行它。是的。我以root用户身份运行它。
Home Path : /home/shiju
Separator : /