Skip to content

小小前端

明月本无心,行人自回首。

Menu
  • 前端开发
  • 编程技术
  • SQL语句
  • Linux
  • 生活/旅行
  • JSEditor
  • MiniBarCMS
  • About
  • 隐私政策
Menu

netbeans中glassfish下获取classes目录

Posted on 2016年9月13日2016年9月13日 by king2088

之前写过一篇文章名为《Java获得classes、WEB-INF目录》主要是为了获取classes和WEB-INF目录的。如果是tomcat服务器的话,默认会选择网站根目录下的WEB-INF目录,但是我在使用netbeans做开发的时候,确怎么也找不到当前目录下的WEB-INF目录,自己编写了一个java类,在java类中运行后得到的确实是当前目录下的WEB-INF目录,但是在sevelet中确证明测试也不成功,无奈又写了一个JSP页面来查看在sevelet中的相应目录。
1、首先来看相关的java类


package com.bar.safe;

import java.io.File;
import java.io.IOException;

/**
*
* @author Mr.Tao
* @date 2016-8-30 22:33:25
* @version V2.0
* @desc THIS IS TEST ! 获得WEB-INF目录测试实例
*/
public class TestDir {
public static void main(String[] args) throws IOException{
//File dir = new File("xxx.properties");
String path1 = Thread.currentThread().getContextClassLoader().getResource("").toString();
path1=path1.replace('/', '\\'); // 将/换成\
path1=path1.replace("file:", ""); //去掉file:
path1=path1.replace("classes\\", ""); //去掉class\
path1=path1.substring(1); //去掉第一个\,如 \D:\JavaWeb...
//path1+="DB.properties";
//dir.createNewFile();
//String path = dir.getCanonicalPath();//设定为当前文件夹
//System.out.println("File Path"+path);
//System.out.println("user.dir:"+System.getProperty("user.dir"));
//System.out.println("user.home:"+System.getProperty("user.home"));

System.out.println("Thread:"+path1);
}
}

运行这个java类我们可以看到glassfish输出的目录如下:

netbeans-glassfish-output
netbeans-glassfish-output

可以看到C:\Users\Administrator\Documents\NetBeansProjects\bar\build\web\WEB-INF\这个目录确实是我们目前web目录下的WEB-INF目录,但是在我真正应用的时候,确找不到这个目录下的properties文件,这到底是什么原因呢,自己老是钻牛角尖,使用了各种方法,转变了多种思路,都还是无法找到解决的方法。突然一天夜里,自己新建了一个jsp文件,把相关代码放在jsp里,我草泥马,原来sevelet解析出来的目录尽然跟上面的java类得到的目录完全不一样,差点就把我搞晕了。
2、jsp代码

<% String path1 = Thread.currentThread().getContextClassLoader().getResource("").toString(); path1=path1.replace('/', '\\'); // 将/换成\ path1=path1.replace("file:", ""); //去掉file: path1=path1.replace("classes\\", ""); //去掉class\ path1=path1.substring(1); //去掉第一个\,如 \D:\JavaWeb... out.println("Thread:"+path1); %>

上面JSP运行后显示如下:

glassfish-jspdir
glassfish-jspdir

看到了吧,是C:\Users\Administrator\personal_domain\lib\,而并非是当前WEB目录下的WEB-INF目录哦。
3、为什么会这样
以下纯属个人观点,同意请点赞,不同意勿喷。
个人认为,netbeans中使用glassfish服务器,而glassfish服务器会为当前用户创建一个属于用户自己的classes目录,glassfish的classes目录并非在WEB-INF下,而是将当前web目录下的WEB-INF下的classes目录映射到了相应的其他classes目录去了。
另外tomcat和glassfish区别就大了。tomcat默认的WEB-INF目录就在其webapps下的ROOT目录下,如果没有进行过虚拟目录的设置,那么tomcat的WEB-INF目录就是ROOT下的那个目录,永远不会改变。设置虚拟目录后,WEB-INF目录自动调整为虚拟目录下的WEB-INF目录,因此个人建议在使用netbeans做javaweb开发的时候,尽量使用tomcat作为服务器,而不要使用自带的glassfish服务器。

发表评论 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

分类

近期文章

  • cordova-plugin-camera在某些android机型中拍照或选择文件时闪退出错的解决办法 2019年10月24日
  • JavaScript nodeJS base64加密解密url参数 2019年10月15日
  • 利用expressJS编写reset api 2019年4月13日
  • angular4 + http拦截器 2019年3月21日
  • ionic navCtrl.pop如何传递参数给上一个页面 2018年11月16日
  • ionic3搭建开发/测试环境 2018年10月25日
  • ionic2、3双击硬件back按键退出应用 2018年10月24日
  • VMware安装Mac OS High Sierra 10.12及高版本无法全屏 2018年8月24日

近期评论

  • 手表资讯发表在《ReactJS环境搭建》
  • king2088发表在《ionic中使用热更新插件cordova-hot-code-push》
  • 重阳节的诗句发表在《常用的sql语句》
  • 新郎致辞发表在《PHP代码实现WordPress相关文章的几种方法》
  • 霸道总裁发表在《vsftpd 提示 unrecognized service 解决办法》

归档

标签

Ajax Android Angular APP Cordova CSS css3 express html5 ionic Java javascript jQuery Linux loading mac Mac OS mongodb MySQL node nodejs PHP react SQL SSH VirtualBox vue vue-cli win10 WordPress WP REST API 主题 兼容性 前端 备份 插件 数据库 数组 服务器 正则表达式 浏览器 热更新 目录 组件 错误
2023年 4月
一 二 三 四 五 六 日
 12
3456789
10111213141516
17181920212223
24252627282930
« 10月    
© 2023 小小前端 | Powered by Superbs Personal Blog theme