idea 中一个工程中多个moudle编译时如何只编译某一个moudle


这个问题没有办法像描述一样的到解决,而我为什么要做这种解决方式。
问题原因:

在idea中将n多个moudle放到了一个project中(为了方便调试代码,因为几乎是同时在修改
多个系统),而多个程序系统使用的不同的jdk编码,当我编译的时候会将工程中的所有moudle
都重新编译一遍,此时我的project SDK选择1.7,但是我工程中moudle有些是1.6的,此时导致
编译失败,如下图:

project SDK 工程的jdk版本moudle中有jdk版本是1.6此时编译失败:
提示编译moudle失败解决办法:
将project sdk版本改成低版本的1.6就可以了,其中的moudle sdk不需要动。
修改工程的sdk版本为1.6版本编译成功。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java反射机制来实现将module的所有service方法封装到一个方法。具体步骤如下: 1. 使用Java反射机制获取module的所有Class对象。 2. 遍历所有Class对象,使用反射机制获取每个Class对象的所有方法。 3. 遍历每个方法,判断是否为service方法,如果是则将其封装到一个新的方法。 4. 将所有封装好的方法保存到一个List,最后返回该List。 下面是示例代码: ```java public List<Method> getAllServiceMethods(String moduleName) throws ClassNotFoundException { List<Method> serviceMethods = new ArrayList<>(); ClassLoader classLoader = getClass().getClassLoader(); Module module = classLoader.getModule(moduleName); Set<String> classNames = module.getPackages().stream() .flatMap(p -> p.getModule().getClassLoader().findAllClassNames(p.getName())) .collect(Collectors.toSet()); for (String className : classNames) { Class<?> clazz = module.getClassLoader().loadClass(className); Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { if (method.isAnnotationPresent(Service.class)) { serviceMethods.add(method); } } } return serviceMethods; } ``` 在上面的代码,我们使用了getClassLoader()方法获取当前类的ClassLoader,然后使用getModule()方法获取指定moduleName的模块,接着使用findAllClassNames()方法获取模块的所有类名。然后遍历每个类,获取其的所有方法,并判断是否为service方法,如果是则加入到serviceMethods列表。最后返回serviceMethods列表。 需要注意的是,代码使用了isAnnotationPresent()方法来判断方法是否被@Service注解修饰。如果使用其他注解来修饰service方法,需要将代码的@Service改为相应的注解名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值