精华内容
下载资源
问答
  • 方式1: System.getProperty(“catalina.home”),获取到的是tomcat的根路径 方式2:request.getSession().getServletContext().getRealPath(""),获取到的是当前项目所在的根路径 方式3:System.getProperty(“user.dir...

    方式1: System.getProperty(“catalina.home”),获取到的是tomcat的根路径
    方式2:request.getSession().getServletContext().getRealPath(""),获取到的是当前项目所在的根路径
    方式3:System.getProperty(“user.dir”),获取到的是不是那么准确,可能是因为我在eclipse下启动的原因

    		String tomcatPath = request.getSession().getServletContext().getRealPath("");
    		System.out.println("request.getSession().getServletContext().getRealPath(''):" + tomcatPath);
    		System.out.println("System.getProperty('catalina.home')" + System.getProperty("catalina.home"));
    		System.out.println("System.getProperty('user.dir')" + System.getProperty("user.dir"));
    		/*
    		 * request.getSession().getServletContext().getRealPath(''):G:\apache\tomcat-7.0.72-2\webapps\portal
    			System.getProperty('catalina.home')G:\apache\tomcat-7.0.72-2
    			System.getProperty('user.dir')G:\eclipse-jee-luna-SR2-win32-x86_64-portaldev\eclipse
    		 */
    
    展开全文
  • java获取项目运行tomcat路径

    千次阅读 2019-03-07 16:56:55
    /D:/tomcat/webapps/test/WEB-INF/classes/"; String cp = classpath.substring(1);//cp=D:/tomcat/webapps/test/WEB-INF/classes/ String rootPath = cp.split("/WEB-INF/")[0]; System.out.p...
    String classpath = "/D:/tomcat/webapps/test/WEB-INF/classes/";
    String cp = classpath.substring(1);//cp=D:/tomcat/webapps/test/WEB-INF/classes/
    String rootPath = cp.split("/WEB-INF/")[0];
    System.out.println(rootPath);//rootPath=D:/tomcat/webapps/test

     

    展开全文
  • 最近在做项目的时候,自己写了一些配置参数的读取,将配置文件放到具体的位置,然后让程序根据当前类的路径寻找配置文件的路径,但是,发现eclipse的开发坏境下是可以顺利读取到指定路径下的配置文件中的配置参数的...

    最近在做项目的时候,自己写了一些配置参数的读取,将配置文件放到具体的位置,然后让程序根据当前类的路径寻找配置文件的路径,但是,发现eclipse的开发坏境下是可以顺利读取到指定路径下的配置文件中的配置参数的,

    但是当将项目放到Tomcat下  或者 将项目打包成可执行jar包之后,编译后的class文件却读取不到了开发环境下寻找的配置文件了。

    如果在 .java 文件中直接写// public static  String Config = "config.properties";  则该路径指向的就是项目的 src 的同级目录(直接将配置文件放到项目的根目录下)

    经过查找资料和进行验证,现将读取class文件相对路径下配置文件的方法汇总如下:

    方法一:使用System获取路径

    方法二:使用当前类的ProtectionDomain或者ClassLoader获取路径

    方法三:使用Thread获取路径

    方法一:

    示例:

     public static  final String URLConfig = System.getProperty("user.dir").replace("bin", "webapps")+"/URLConfig.properties";//这种是将配置文件放到Tomcat的webapps的目录下

    其中的 System.getProperty("user.dir")  为获取用户当前工作目录

    java的System.getProperty()方法可以获取的值

    获取的代码示例:

    public   class  SystemProperty {  
        public   static   void  main(String args[]) {     
        System.out.println("java_vendor:"  + System.getProperty( "java.vendor" ));     
        System.out.println("java_vendor_url:"      
                 + System.getProperty("java.vendor.url" ));     
        System.out.println("java_home:"  + System.getProperty( "java.home" ));     
        System.out.println("java_class_version:"      
                 + System.getProperty("java.class.version" ));     
        System.out.println("java_class_path:"      
                + System.getProperty("java.class.path" ));     
        System.out.println("os_name:"  + System.getProperty( "os.name" ));     
        System.out.println("os_arch:"  + System.getProperty( "os.arch" ));     
        System.out.println("os_version:"  + System.getProperty( "os.version" ));     
        System.out.println("user_name:"  + System.getProperty( "user.name" ));     
        System.out.println("user_home:"  + System.getProperty( "user.home" ));     
        System.out.println("user_dir:"  + System.getProperty( "user.dir" ));     
        System.out.println("java_vm_specification_version:"      
                + System.getProperty("java.vm.specification.version" ));     
        System.out.println("java_vm_specification_vendor:"      
                + System.getProperty("java.vm.specification.vendor" ));     
        System.out.println("java_vm_specification_name:"      
                + System.getProperty("java.vm.specification.name" ));     
        System.out.println("java_vm_version:"      
                + System.getProperty("java.vm.version" ));     
        System.out.println("java_vm_vendor:"      
                + System.getProperty("java.vm.vendor" ));     
        System.out     
                .println("java_vm_name:"  + System.getProperty( "java.vm.name" ));     
        System.out.println("java_ext_dirs:"      
                + System.getProperty("java.ext.dirs" ));     
        System.out.println("file_separator:"      
                + System.getProperty("file.separator" ));     
        System.out.println("path_separator:"      
                + System.getProperty("path.separator" ));     
        System.out.println("line_separator:"      
                + System.getProperty("line.separator" ));     
    }

     

    上面示例引用的博客地址:https://blog.csdn.net/capmiachael/article/details/51895823

     

    方法二:

    示例1:

    复制代码

    public static String getMyDIR(){//获取当前类文件的绝对路径
    String jarWholePath = ConfigerPraram.class.getProtectionDomain().getCodeSource().getLocation().getFile(); 
    try { 
    //保险起见,将路径进行decode转码
    jarWholePath = java.net.URLDecoder.decode(jarWholePath, "UTF-8"); 
    } catch (UnsupportedEncodingException e) { System.out.println(e.toString()); } 
    //获取jar包的上级目录
    String jarPath = new File(jarWholePath).getParentFile().getAbsolutePath(); 
    return jarPath;
    }

    复制代码

    示例2:

    复制代码

    /**
         * 获取项目所在路径
         * 
         * @return
         */
        public static String getRealPath() {
         //通过类加载器获取jar包的绝对路径
            String realPath = MyPath.class.getClassLoader().getResource("")
                    .getFile();
            java.io.File file = new java.io.File(realPath);
            realPath = file.getParentFile().getAbsolutePath(); //获取jar包的上级目录
    try {
           //路径decode转码
                realPath = java.net.URLDecoder.decode(realPath, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }  
        return realPath ; 
      }

    复制代码

     

     

    方法三:(该方法还未做验证,引用博客:https://blog.csdn.net/z69183787/article/details/22774537)

    Thread.currentThread().getContextClassLoader().getResource("")来得到当前的classpath的绝对路径的URI表示法

    Application可以通过new FileInputStream("xx.properties");直接在classes一级获取。关键是有时我们需要通过web修改配置文件,我们不 能将路径写死了。经过测试觉得有以下心得:

    1.servlet中读写。如果运用Struts 或者Servlet可以直接在初始化参数中配置,调用时根据servlet的getRealPath("/")获取真实路径,再根据String file = this.servlet.getInitParameter("abc");获取相对的WEB-INF的相对路径。
    例:
    InputStream input =Thread.currentThread().getContextClassLoader().getResourceAsStream("abc.properties"); 
    Properties prop = new Properties();
    prop.load(input);
    input.close();

    prop.setProperty("abc", “test");
    prop.store(new FileOutputStream(path), “–test–"); 
    out.close(); 

    2.直接在jsp中操作,通过jsp内置对象获取可操作的绝对地址。
    例:
    // jsp页面
    String path = pageContext.getServletContext().getRealPath("/");
    String realPath = path+"/WEB-INF/classes/abc.properties";

    //java 程序
    InputStream in = getClass().getClassLoader().getResourceAsStream("abc.properties"); // abc.properties放在webroot/WEB-INF/classes/目录下
    prop.load(in);
    in.close();

    OutputStream out = new FileOutputStream(path); // path为通过页面传入的路径
    prop.setProperty("abc", “abcccccc");
    prop.store(out, “–test–");
    out.close();

    3.只通过Java程序操作资源文件
    InputStream in = new FileInputStream("abc.properties"); // 相对路径,项目下的路径

    OutputStream out = new FileOutputStream("abc.properties");

     

    下面的参考解释引用于博客:https://www.cnblogs.com/gaoxing/p/4703412.html

     

    打个简单的比方,你一个WEB程序,发布到Tomcat里面运行。
    首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这时候的类加载器是ClassLoader.getSystemClassLoader()。
    而我们后面的WEB程序,里面的jar、resources都是由Tomcat内部来加载的,所以你在代码中动态加载jar、资源文件的时候,首先应该是使用Thread.currentThread().getContextClassLoader()。如果你使用Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致(因为Java天生的多线程)。
    Test.class.getClassLoader()一般用在getResource,因为你想要获取某个资源文件的时候,这个资源文件的位置是相对固定的。

    java的类加载机制(jvm规范)是委托模型,简单的说,如果一个类加载器想要加载一个类,首先它会委托给它的parent去加载,如果它的所有parent都没有成功的加载那么它才会自己亲自来,有点儿像儿子使唤老子的感觉。

     

    如果你使用Test.class.getClassLoader(),可能会导致和当前线程所运行的类加载器不一致 :Class.getClassLoader() returns the class loader for the class. Some implementations may use null to represent the bootstrap class loader. This method will return null in such implementations if this class was loaded by the bootstrap class loader.

    展开全文
  • 如何获取 java -jar 获取当前jar的绝对路径? . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_...

    如何获取当前执行项目的路径?如何获取 java -jar 获取当前jar的绝对路径?

    .   ____          _            __ _ _
     /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
     \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::        (v2.1.6.RELEASE)

    2021-06-18 10:18:57.298  INFO 87404 --- [           main] c.e.s.SpringbootdemoApplication          : Starting SpringbootdemoApplication on zjMacBook-Pro.local with PID 87404 (/opt/jy/work/ta/springbootdemo/target/classes started by zj in /opt/jy/work/ta/springbootdemo)
    2021-06-18 10:18:57.301  INFO 87404 --- [           main] c.e.s.SpringbootdemoApplication          : No active profile set, falling back to default profiles: default
    2021-06-18 10:18:58.211  INFO 87404 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)

    springboot 启动项目能看到如上的日志,可看到已经输出了项目所在路径。

    然后mvn clean package 后,使用java -jar 启动,可以看到输出的日志为:

    2021-06-18 10:33:38.147  INFO 94484 --- [           main] c.e.s.SpringbootdemoApplication          : Starting SpringbootdemoApplication v0.0.1-SNAPSHOT on zjMacBook-Pro.local with PID 94484 (/opt/jy/work/pa/jarsigned/zjtarget/signed.jar started by zj in /Users/zj) 

    日志中已经输出了jar的绝对路径:/opt/jy/work/pa/jarsigned/zjtarget/signed.jar

    跟从springboot启动源码,最终找到了获取jar绝对路径的代码,在ApplicationHome.java类中

    /**
     * 获取执行代码的绝对路径,获取执行当前jar包的绝对路径
     * @return
     */
    String getPath(){
       ApplicationHome applicationHome = new ApplicationHome(SpringbootdemoApplication.class);
       File file = applicationHome.getSource();
       String path = file.getAbsolutePath();
       return path;
    }

     

    展开全文
  • java web 获取当前运行路径的方法

    千次阅读 2018-01-21 14:55:27
    在web开发中,如果需要配置额外的xml属性文件。...下面介绍几种获取当前项目运行路径的方法。  1、URL url = T.class.getProtectionDomain().getCodeSource().getLocation();   例如:URL url = CrmBus
  • 转载:java获取项目在tomcat目录下的路径方法 HttpServletRequest request //获取的是ROOT项目在tomcat下的路径 方法1:  String path = request.getSession().getServletContext().getRealPath("/"...
  • 获取Java程序运行路径 | 获取当前jar包的路径 转自 Itype 用户snoopy7713 http://marsvaadin.iteye.com/blog/1671046 不管是否是 Jar 包,不管是否是 Tomcat 部署,以下三个方法均可实现。 package test;public ...
  • java获取运行路径

    千次阅读 2017-08-13 19:44:37
    1、利用System.getProperty()函数获取当前路径:  System.out.println(System.getProperty("user.dir"));//user.dir指定了当前路径  2、使用File提供的函数获取当前路径:  File directory = new File("")...
  • java 获取 tomcat 服务器目录

    千次阅读 2018-12-27 18:31:52
    String webrootpath = getRequest().getSession().getServletContext().getRealPath("/")+File.separator; D:\eclipse-oxygen-workspace\****************\WebRoot\
  • JAVA 获取 Tomcat 端口

    千次阅读 2019-08-07 11:03:35
    public class RunTimeUtil { ... //获取 tomcat 运行端口 public static int getTomcatPort(){ int port = 0 ; MBeanServer mBeanServer = null; ArrayList<MBeanServer> mBeanServers = MBeanServer...
  • java 获取当前路径

    千次阅读 2014-04-25 10:50:31
    object.class.getResource()方法获得当前生成的class的绝对路径(此方法在jar包中无效,因为他获得的是生成的class的路径,返回的内容最后包含/)   [c-sharp] view plaincopy //当前...
  • Java获取.class文件路径

    万次阅读 2018-01-17 17:35:34
    为了详细说明要介绍的几种方法,本例准备了两个... tomcat路径:D:\tomcat\ Ⅰ、Thread.currentThread().getContextClassLoader().getResource(name).getPath();  name:资源名称,例如:"com/test/test.txt"。
  • Java 关于获取webapp路径问题

    万次阅读 2017-09-21 09:28:50
    1.可以在servlet的init方法里 ... 这将获取web项目的全路径 例如 :E:\eclipseM9\workspace\tree\ tree是我web项目的根目录 2.你也可以随时在任意的class里调用 this.getClass().getClassLoader().getResourc
  • package com.dxl.base.utils; import org.apache.commons.lang3.StringUtils; import javax.servlet.... import java.io.File; import java.text.SimpleDateFormat; import java.util.Date;...
  • tomcat获取相对路径和绝对路径总结

    千次阅读 2017-11-08 23:50:00
    Java代码 Stringpath=Struts2Util.getServletContext().getRealPath("/"); Jsp代码 <% Stringpath=request.getContextPath(); StringbasePath=request.getS...
  • Java Web程序在Tomcat上是如何运行

    千次阅读 2020-02-18 18:11:05
    一个 JVM 是一个进程,JVM 上跑 TomcatTomcat 上可以部署多个应用。这样的话,每个跑在 Tomcat 上的...我们以上面这个问题为例,看下 Java Web 程序的运行时环境是什么样的,来梳理下进程、线程、应用、Web 容器、...
  • 假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么java文件夹和resources文件夹在运行时就是class
  • java获取项目访问路径的方法

    千次阅读 2019-03-14 10:57:42
    1.如何获得当前文件路径 常用: (1).Test.class.getResource("") 得到的是当前类FileTest.class文件的URI目录。不包括自己! (2).Test.class.getResource("/") 得到的是当前的classpath的绝对URI。 (3).Thread...
  • 经过试验,不管是否是 Jar 包,不管是否是 Tomcat 部署,以下三个方法均可实现。   package test;   public class MyPath {  public static String getProjectPath() {    java...
  • JAVA中关于获取资源路径 1. 基于文件系统的相对简单: 比如构造一个File f = new File('text.txt'); 这里传递给File构造函数的可以是相对路径比如text.txt就是相对路径, 也可以是绝对路径比如:new File('C:/...
  • SpringBoot在Tomcat下面启动,访问路径

    万次阅读 2018-09-15 15:41:19
    一切都很顺利,但是项目启动的路径,还是原来的访问的路径 让我很是头疼,怎么办 而且关键的是pom.xml我也进行了修改,但是访问的路径还是原来的路径 我本来可以按照原来的趋势在上面进行修改呗 但是发现,...
  • 工具/原料 JDK1.7.0 WIN7 方法/步骤 ...(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错) 如下图所示 1:安装jdk 随意选择目录 只需把默认安装目录...
  • JAVA应用程序获取当前路径

    万次阅读 2011-12-16 11:26:49
    如果对于类不在包内:利用System....但是对于类在包内的情况就不同了:System.getProperty("user.dir")取得的是包所在的路径,而this.getClass().getResource("")才真正获得的是当前类所在的路径。 例如: 在
  • Java文件路径/服务器路径获取

    千次阅读 2017-08-08 19:19:23
    Java文件路径获取 几种获取方式 getResourceAsStream ()返回的是inputstream getResource()返回:URL Class.getResource("") 返回的是当前Class这个类所在包开始的为置 Class.getResource("/") 返回的是...
  • java获取路径相关总结

    2020-07-27 23:21:11
    一直是个路径白痴,刚好最近有涉及了一些,所幸就总结一下,方便自己下次使用。 本文总结了一些常用到的路径,以及在打包成war时,创建上传资源的文件夹路径遇到的坑。
  • public void uploadPic(HttpServletRequest request){ int[] ports = new int[3]; ports[0] = request.... //获取服务器端口 ports[1] = request.getLocalPort(); //获取本地端口 ports[2] = request....
  • web-tomcat获取路径问题

    2017-03-30 13:51:17
    出处:http://www.cnblogs.com/tyxa/archive/2016/08/27/5813393.html web项目中各种路径获取 以工程名为/DemoWeb为例:  ...1 JSP中获得当前应用的相对路径和绝对路径 
  • 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,707
精华内容 19,082
关键字:

java获取当前运行的tomcat路径

java 订阅