伙计们,我面临着一个基本但棘手的问题。
最近在学习JSP。
众所周知,“import”语句帮助java程序在系统java库或您自己的文件中查找类。
这是一个例子来说明我的问题:想象有一些问题,我将在当天晚些时候上传。
假设我的路径中有 App.java
$main/com/sub
,在IDE中它属于com.sub包; 我在路径中有另一个 useApp.java
$main/com
,它将与包 com. 现在如果useApp.java需要导入App.class。正如我的教科书所说,手动导入java类的方法是将.class文件放在src目录的子目录中。这样App.class应该是位于
$main/com/com/sub/App.class
这很奇怪,不是吗。这是我首先使用的结构。现在我知道以这种方式组织不同的类是很糟糕的。那么有没有任何约定的方式来组织你自己的文件的依赖项。我应该这样做吗?一般配置项目的.classpath文件吗?
我尝试使用.classpath文件。获取了useApp.class文件集。并尝试在jsp文件使用中调用它
<%@ page import="fullclassname"%>
并不断收到错误“无法解析为类型”。
最佳答案
类路径并不像乍看起来那么简单。特别是 Web 应用程序和使用插件机制的应用程序使用不同的类加载器,这可能会令人困惑。
类加载器
一个好的起点是阅读一些有关类加载器的内容: https://www.baeldung.com/java-classloaders 这将以整体 Java 方式回答“导入将找到文件”的问题。
调试类加载
如果您在调试应用程序时需要“查找文件”,则可以使用 -verbose
选项(也在 IDE 中,通常称为启动配置或类似选项)启动 Java 应用程序。
java -verbose HelloWorld
https://www.ibm.com/support/pages/using-java-verbose-option-determine-where-jdbc-driver-classes-are-loading https://dzone.com/articles/how-use-verbose-options-java
标准化项目结构
此外,还有一些热衷于构建 Java 项目结构的标准。 Maven 是这里的早期统治者之一。因此,对于初学者来说,采用标准的 MAVEN 项目结构可能不是一个坏主意。 https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
关于Java类依赖, "import"如何在文件系统中找到该类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62352222/