因此,我对Java,特别是Eclipse相当陌生,所以请原谅我的无知。我从一台服务器上取了一个项目并将它复制到本地机器上。当我打开工作空间时,由于无法找到罐子,我有很多错误。这是有道理的,因为我没有与从我复制的服务器相同的目录结构。因此,如果我将同一个外部jar复制到我的机器并将它编译成jar并将其复制回服务器,它是否可以工作?或者它会失败,因为现在外部的罐子在一个不同的地方,而不是它所期待的?了解Eclipse中的外部罐区
另外,在路上我应该把外部瓶子放到普通的罐子里以避免这个问题?
因此,我对Java,特别是Eclipse相当陌生,所以请原谅我的无知。我从一台服务器上取了一个项目并将它复制到本地机器上。当我打开工作空间时,由于无法找到罐子,我有很多错误。这是有道理的,因为我没有与从我复制的服务器相同的目录结构。因此,如果我将同一个外部jar复制到我的机器并将它编译成jar并将其复制回服务器,它是否可以工作?或者它会失败,因为现在外部的罐子在一个不同的地方,而不是它所期待的?了解Eclipse中的外部罐区
另外,在路上我应该把外部瓶子放到普通的罐子里以避免这个问题?
你应该没问题。 Java使用所谓的类路径来定位依赖关系。类路径在开发机器上可能是不同的,但只要所有的依赖关系在生产环境中的类路径上,一切都应该起作用。
为了避免目录结构同步的问题,最常用的方法是使用Maven - 它会管理你的所有依赖(但你必须管理pom.xml - Maven的项目描述符)。有点笨拙的方法是在项目中拥有依赖关系,但是最终可能会有许多项目必须包含相同的jar包,然后会出现版本冲突等问题。
对于小型项目,您可以自行管理依赖关系,但是较大的项目需要通过策略进行更多思考(如Maven)。
关于可执行文件夹,请确保< jarfile>:\ META-INF \ MANIFEST.MF中的Class-Path条目是正确的,例如,在参考其他罐子的地方,那些罐子将在生产中出现在那里。例如,假设我们有ourjar.jar
并认为这是从它的MANIFEST.MF一个片段:
Class-Path: lib/myteamjar.jar
那么这将是预计将有以下目录结构是否到位:
lib/myteamjar.jar
ourjar.jar
没有,外部罐子的位置不重要。你想要做的是把外部的瓶子放在你的类路径中。你怎么做取决于你如何运行你的java代码。如果使用命令java
从CLI运行它,它将类路径作为参数。如果你想让你的代码在Eclipse中构建/运行,你需要右键点击你的项目,选择“Build Path”>“Configure Build Path ...”。使用“Add JARs ...”按钮来添加那些是你已经打开的一个项目的一部分和“添加外部JAR ...”来添加驻留在项目之外的jar。有关类路径的更多详细信息,请参阅您的工具的具体文档。
我不会推荐Maven给那些对Java和Eclipse相当陌生的人。我也会忘记Eclipse。
您有一个包装和CLASSPATH问题。专注于此。
你在说什么类型的项目?您得到的答案将取决于您创建的应用程序类型。它是一个可执行的JAR吗?然后,正确的做法是将所有内容打包到一个ZIP文件中,该文件与JAR清单中的CLASSPATH所预期的完全一致。
如果它是一个Web应用程序,那么正确的是一个WAR文件,在您的应用程序需要的所有JAR文件在WEB-INF/lib目录中。
如果你正确包装的东西,你应该结束了一个包装,所有的东西都摆在正确的位置。您应该能够将其部署到服务器并使其工作。
因此,经过更多的研究,看起来他们正在使用包含外部JAR的用户库。如果可以,我可以更改用户库的Jars指向我的本地副本的路径,然后我能够将我的可执行JAR复制回服务器而无需更改其他任何东西?感谢所有的答复。 – tacotime