`

使用class.getClassLoader().getResource("")的注意事项

阅读更多

前几天在写一个C/S的小工具,使用class.getClassLoader().getResource("")时,发现一个问题,程序如下:

 

package com.syj;

public class ClassLoaderTest {
    
public static void main(String[] args){
        String classPath1 
= ClassLoaderTest.class.getClassLoader().getResource(
                
"config.ini").toString();
        System.out.println(
"classPath1:" + classPath1);
        String classPath2 
= ClassLoaderTest.class.getClassLoader().getResource(
                
"").toString();
        System.out.println(
"classPath2:" + classPath2);
    }
}

打成jar包test.jar
执行
java -jar test.jar
pause

执行结果
classPath1:jar:file:/D:/DEV.WORK/works_acnt/Test/test.jar!/config
Exception in thread "main" java.lang.NullPointerException
        at com.syj.ClassLoaderTest.main(ClassLoaderTest.java:9)

执行
set CLASSPATH=%CLASSPATH%;test.jar;
java com.syj.ClassLoaderTest
pause

执行结果
classPath1:file:/D:/DEV.WORK/works_acnt/Test/config.ini
classPath2:file:/D:/DEV.WORK/works_acnt/Test/


不难发现当使用java -jar test.jar启动程序时可以getResource一个具体文件是没有问题的但是getResource("")就会出问题,要把这个jar

到ClassPath里面才行
可见用java -jar test.jar启动程序时程序并不知道当前这个test.jar的绝对路径

 

 

linux下路径为//home/hdfs/.....,否则也可能空异常

分享到:
评论

相关推荐

    Java路径问题解决方案汇集

     URLTest.class.getClassLoader().getResource().getPath();  Thread.currentThread().getContextClassLoader().getResource().getPath();等多种相似方式获得的路径,不能被FileReader()和FileWriter()直接应用...

    sax解析util

    URL url = Configuration.class.getClassLoader().getResource(filename); String str = url.getFile(); // 转换编码 str = URLDecoder.decode(str, "utf-8"); File conf = new File(str); ...

    SpringMVC源码分析系列

    NULL 博文链接:https://zzc1684.iteye.com/blog/2210510

    Digester解析xml

    Digester digester = DigesterLoader.createDigester(TestDigester.class.getClassLoader().getResource(Constants.CONFIG_MAPPINGRULE_PATH)); digester.setValidating(false);

    Jonny023#Study#Java-加载properties文件1

    1、使用class变量的getResourceAsStream()方法 2、使用class.getClassLoader()所得到的java.lang.Clas

    java自定义弹窗Demo

    Icon icon = new ImageIcon(ConfirmDialog.class.getClassLoader().getResource("info.png")); ScaleIcon scaleIcon = new ScaleIcon(icon); JLabel iconLabel = new JLabel(scaleIcon); iconLabel....

    java读取配置文件的实例代码

    java项目读取配置文件的实例代码,使用class.getClassLoader().getResourceAsStream方法。

    Mybatis源码分析.md

    InputStream inputStream = CommonTest.class.getClassLoader().getResourceAsStream("mybatis-configuration.xml"); SQLSessionFactory SQLSessionFactory = new SQLSessionFactoryBuilder().build(inputStream)...

    Java 高级特性.doc

    Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class); String str = (String)constructor.newInstance(new StringBuffer("abc")); System.out.println(str); ...

    pull解析XML

    List<WeatherInfos> infos = weatherService.getWeatherInfos(MainActivity.class.getClassLoader().getResourceAsStream("z.xml")); StringBuffer sb = new StringBuffer(); for(WeatherInfos info : infos){ ...

    properties资源文件utils类

    String filepath = ContentMessage.class.getClassLoader().getResource("") .getPath(); filepath = filepath.substring(0, filepath.length() - 8); filepath = filepath + "resource/Application...

    传智博客jdbc学习案例

    InputStream inStream = DaoFactory.class.getClassLoader() .getResourceAsStream("daoconfig.properties"); prop.load(inStream); String userDaoClass = prop.getProperty("userDaoClass"); ...

    TangHanF#project_record_book#获取jar包所在路径1

    //得到windows下的正确路径// String path = monitorClientMain.class.getClassLoader().toStr

    Java开发的小游戏 仿坦克大战

    im=tk.getImage(Tree.class.getClassLoader().getResource("images/dor.gif")); } public void draw(Graphics g) { if(!live) return; g.drawImage(im, x, y, null); if(r.nextInt(40) > 38){ //...

    Java连接数据库代码

    in = MyTask.class.getClassLoader().getResourceAsStream("db.properties"); prop.load(in); this.sql_ip=prop.getProperty("DB_IP").trim(); this.sql_db_name=prop.getProperty("DB_NAME").trim(); this.sql...

    java工厂系列设计模式源码与文档

    public class ClassXmlPathApplicationContext implements BeanFactory { private Map, Object> map = new HashMap, Object>(); public ClassXmlPathApplicationContext(String fileName) throws Exception, ...

    testng-parser:TestNG解析器

    ClassLoader cl = TestTestNGParser.class.getClassLoader();URL url = cl.getResource("com/tupilabs/testng/parser/testng-results.xml");File file = new File(url.getFile());List<Suite> suites

    Java ClassLoader学习总结

    主要内容包括 Java类加载机制及加载流程,以及如何定义自己的类加载器,如何实现类的热替换。

    commons-dbcp2-2.0-bin.zip

    InputStream inStream = DBCPConnection.class.getClassLoader().getResourceAsStream("dbcp.properties"); propreties.load(inStream); DataSource dataSource = BasicDataSourceFactory.createDataSource...

    测试 test-spring-spi

    List<Say> loadFactories = SpringFactoriesLoader.loadFactories(Say.class, TestCase.class.getClassLoader()); for (int i = 0; i < loadFactories.size(); i++) { Say say = loadFactories.get(i); ...

Global site tag (gtag.js) - Google Analytics