理论上不能,因为java可能动态创建并加载类.

实践上是可能, 假设你不动态创建类, 或动态创建也由你的ClassLoader来处理,或可能忽略那些不是你创建的类

则用Guava反射的方式:Reflections reflections = new Reflections("com.wy.evolution.framework.controller"); Set> allClasses =

reflections.getSubTypesOf(Object.class);

//或者用

ClassPath.getTopLevelClasses(String packageName)扫描classpath的方式:

/**

* Scans all classes accessible from the context class loader which belong to the given package and subpackages.

*

* @param packageName The base package

* @return The classes

* @throws ClassNotFoundException

* @throws IOException

*/

private static Class[] getClasses(String packageName)

throws ClassNotFoundException, IOException {

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

assert classLoader != null;

String path = packageName.replace('.', '/');

Enumeration resources = classLoader.getResources(path);

List dirs = new ArrayList();

while (resources.hasMoreElements()) {

URL resource = resources.nextElement();

dirs.add(new File(resource.getFile()));

}

ArrayList classes = new ArrayList();

for (File directory : dirs) {

classes.addAll(findClasses(directory, packageName));

}

return classes.toArray(new Class[classes.size()]);

}

/**

* Recursive method used to find all classes in a given directory and subdirs.

*

* @param directory   The base directory

* @param packageName The package name for classes found inside the base directory

* @return The classes

* @throws ClassNotFoundException

*/

private static List findClasses(File directory, String packageName) throws ClassNotFoundException {

List classes = new ArrayList();

if (!directory.exists()) {

return classes;

}

File[] files = directory.listFiles();

for (File file : files) {

if (file.isDirectory()) {

assert !file.getName().contains(".");

classes.addAll(findClasses(file, packageName + "." + file.getName()));

} else if (file.getName().endsWith(".class")) {

classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6)));

}

}

return classes;

}

java 获取java文件路径_Java怎么获取相对路径下所有的.java文件的信息相关推荐

  1. java如何获取文件路径_java如何获取文件路径

    第一种:File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...

  2. java资源文件路径_Java 中获取资源(文件)的路径问题总结

    Java 中获取资源(文件)的路径问题总结 首先,Java 中获取资源大体上可分为两种方式,基于 文件系统的 和 基于classpath的. 1. 基于文件系统的相对简单. 比如 构造一个File f ...

  3. java代码获取项路径_Java中获取各种路径的方法盘点

    Java代码中获取路径 假设当前项目路径为:D:/wunian/workspace/JavaProject,现在来分别获取此项目中的各种路径. 1.获取资源文件(.class文件)所在路径(四种方式) ...

  4. java application 路径_java项目获取根路径(web项目和application项目的区分)

    Java项目中经常要读取配置文件,涉及到读取配置文件的地方,就会要读定位文件的路径.因此,在项目如何正确获取文件路径尤为关键. 根据不同的java项目,在获取文件路径时候有一些 小区别 测试环境:E: ...

  5. java中怎么找类的路径_Java中获取类加载路径和项目根路径的5种方法

    public class MyUrlDemo { public static void main(String[] args) { MyUrlDemo muDemo = new MyUrlDemo() ...

  6. java exe 路径_Java程序获取执行自己的java.exe路径

    首先通过:java.lang.management包提供的接口获取当前进程ID:接下来利用wmic命令根据进程ID获取进程exe的目录.代码如下: /** * Windows下获取运行当前程序的jav ...

  7. 在java中图片路径_java中获取图片路径三中方法

    java中获取图片路径的方法 //获取路径三中方法 //+ f.getOriginalFilename(); //String filedir = Thread.currentThread().get ...

  8. java获取泛型的类型_Java反射获取泛型类型

    public class Person{ }importjava.lang.reflect.ParameterizedType;importjava.lang.reflect.Type;public ...

  9. java中的常用的文件流_Java 基础(四)| IO 流之使用文件流的正确姿势

    image.png 一.什么是 IO 流? 想象一个场景:我们在电脑上编辑文件,可以保存到硬盘上,也可以拷贝到 U 盘中.那这个看似简单的过程,背后其实是数据的传输. 数据的传输,也就是数据的流动.既 ...

  10. java 接口文件夹_Java NIO.2 使用Path接口来监听文件、文件夹变化

    Java7对NIO进行了大的改进,新增了许多功能: •对文件系统的访问提供了全面的支持 •提供了基于异步Channel的IO 这些新增的IO功能简称为 NIO.2,依然在java.nio包下. 早期的 ...

最新文章

  1. 【数学专题】矩阵乘法
  2. ajax invoke error,配置全局的异常捕获时,走ajax请求下面报错
  3. Centos6 安装NTP 4.2.8 服务器
  4. Design Compiler指南——概述和基本流程
  5. 【转】怎么样从一个疯狂下载者成为一个学习者!!!值得反省下的问题·~~
  6. 为什么我建议每个开发人员都需要学Python?不看会后悔!
  7. 为什么TCP连接不可靠
  8. OCR文字识别技术总结(二)
  9. Android开发之数据库Sqlite
  10. 第22节 软件工程知识
  11. 【log4cpp_学习】2_log4cpp配置文件的使用
  12. php识别手写图片,可识别手写字体的文字识别软件(附源码)
  13. windows meson ,ninja安装以及vs2017编译 libnice
  14. 华为网络设备SSH连接
  15. 微信小程序云开发———云存储
  16. java -- 百度API 接口使用
  17. C++中模板的特化与偏特化
  18. Extending Air
  19. C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合
  20. unity的ui跟随鼠标移动

热门文章

  1. 可在广域网部署运行的QQ高仿版 -- GG叽叽(开源)
  2. centos6.4安装java,CentOS6.4下YUM安装MySQL和JDK和Tomcat
  3. python 博弈论 库_SHAP:Python的可解释机器学习库
  4. mybatis对mysql if函数_Mybatis使用mysql函数if出现错误
  5. 如何删除oracle用户数据库用户,oracle删除指定用户的原数据库,建立该用户的新数据库...
  6. 树莓派文件服务器nas,树莓派搭建NAS服务器
  7. linux Fedora安装桌面,CentOS6.x\Red Hat\Fedora\Linux 安装Wine 1.7.48 桌面运行环境教程
  8. 第十六届全国大学生广东赛区线上比赛流程规范
  9. 新车模、新舵机、新体验
  10. 这也不能一直在这儿瞎忙活