看到这个问题,真心觉得初学入门就用IDE真心不是一个好方法。IDE屏蔽了太多基础知识,比如Java是需要编译的,运行的是编译后的class文件。编译命令有编译参数,执行命令有执行命令的参数。还有环境变量,classpath等。由于IDE对这些细节的自动完成,让很多初学者以为执行的就是他写的Java代码,代码必须放到source folder等等问题都是因为缺乏这些基础知识的了解。
现在回答下题主的问题:
IDE中的source foler指定就是编译时Javac命令的源码目录参数。而target folder或者说class folder就是Javac指定的编译后的class存放目录。同时这个目录又是执行时Java命令的classpath参数的值。Java命令在执行时会从当前命令的classpath和系统环境变量中的classpath中查找运行时需要用的class文件。
因此在IDE中,如果将一个Java代码文件放到非source folder里,首先IDE肯定不会做自动编译操作,因为就不可能有class文件,那么其他的Java代码想引用这个Java代码的时候,会报错找不到该类。
如果手动将Java代码编译并将这个class放到IDE的target folder的对应package 目录下,在IDE就可以引用到这个Java代码,但无法关联对应代码,也就是你引入并使用这个代码,但无法在IDE中通过在使用方跳转到打开这个代码,因为IDE不知道你收到放的class和非source foler的代码是有关系的。
最后,建议题主通过命令行手动编译执行下一个在IDE中可以正常运行的项目。如果能正确编译并正常运行了,那么对于Java基础中编译和运行算是掌握了。