标签: classpath

CLASSPATH,Java Buld Path(eclipse)和WEB-INF\LIB:使用什么,何时以及为什么?

我最近从.NET切换到J2EE,并且对于放置JAR文件的位置感到困惑.我知道CLASSPATH,WEB-INF和Eclipse的Java Web Path都是可以存储JAR的地方,但我对使用哪个文件夹,何时以及为什么感到困惑.

首先,我们有CLASSPATH.我通常通过进入"我的电脑"中的"环境变量"来设置它.我知道这是Java编译器查找JAR文件的默认位置.当我将文件夹或JAR添加到我的CLASSPATH环境变量时,为什么Eclipse,Java编译器和Web服务器会忽略它?

此外,我知道WEB-INF\LIB是一个可以放置Web应用程序将要使用的JAR文件的地方.但是,我将JAR放在WEB-INF\LIB中只是为了让它们被忽略.在什么情况下我应该将JAR放入WEB-INF\LIB文件夹?如何让Eclipse或Web服务器注意到它们?

到目前为止,唯一对我有用的是实际更改Eclipse项目的Java Build Path.我将选择我需要的JAR并点击"Add External JARs".大部分时间,当我这样做时,Eclipse将识别我的JAR并阅读其中的类.但是,我这样做时遇到了一堆奇怪的随机错误(我认为这主要与依赖关系有关).出于某种原因,我只是觉得这不是正确的做事方式,而是我错过了一些重要的信息.我什么时候应该在Eclipse中手动添加外部JAR,何时应该以不同的方式做事?为什么Eclipse的Java Build Path似乎不知道我的CLASSPATH环境变量中的文件夹?

真的,我想更好地理解CLASSPATH,Eclipse的Java构建路径和WEB-INF/LIB文件夹 - 它们服务的目的,它们之间的关系,以及我应该将JAR放在各种各样的地方的情况.我很感激你能给我的任何建议,或者你可以推荐的任何文章.

谢谢.

java eclipse jar classpath java-ee

36
推荐指数
2
解决办法
8万
查看次数

Spring启动性能问题

我正在尝试将Spring集成到一个包含数千个类的相当大的应用程序中,并且由于组件扫描,我在启动容器时遇到了巨大的延迟.

我已经收窄,以减少在扫描无关目录浪费的时间,在"基本包"规定,到最低目录的数量,但初始化的类路径扫描部分仍需要大约1-2分钟.

那么,有没有办法优化扫描过程?我曾想过将候选类路径存储在一个文件中,然后让容器从文件中获取它们,而不是每次启动都扫描类路径,但我真的不知道从哪里开始,或者甚至可能.

任何建议都非常感谢.提前致谢.

编辑:加载Bean定义形成自动生成XML文件,减少了弹簧引导时间9〜10秒这证实了各组分的类路径扫描使用由Spring反射API是启动延迟的主要来源.
至于生成xml文件,这里是代码,因为它可能对有相同问题的人有帮助.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;


public class ConfigurationWriter {

    public ArrayList<String> beanDefinitions = new ArrayList<String>();

    public ConfigurationWriter() {

        // the context loaded with old fashioned way (classpath scanning)
        ApplicationContext context = SpringContainerServiceImpl.getInstance().getContext();
        String[] tab = context.getBeanDefinitionNames();
        for (int i = 0; i < tab.length - 6; i++) {
            Class clazz = context.getType(tab[i]);
            String scope = context.isPrototype(tab[i]) ? "prototype" : "singleton";
            String s = "<bean id=\"" + tab[i] + "\" class=\"" …
Run Code Online (Sandbox Code Playgroud)

java spring bootstrapping spring-mvc classpath

36
推荐指数
1
解决办法
3万
查看次数

System属性和环境变量之间的区别是什么

我不清楚这一点.当我在applet查看器中运行java App或运行Applet时(在IDE环境中), System.getProperty("java.class.path")给我与System.getenv("CLASSPATH")我的env变量中定义的CLASSPATH 相同.

但是当我将我的applet部署到web服务器并从与客户端相同的计算机访问它时,我得到了两个不同的结果.(System.getProperty("java.class.path")仅指向JRE home并System.getenv("CLASSPATH")返回null).

还有一些令我惊讶的事情:

对于applet部分,env var JAVA_HOME,在浏览器和Applet Viewer中部署applet时得到的结果相同.

如果我在系统级别定义一个env变量,并使用getenv("envName")结果是null.无论如何我可以定义一个并在我的Java程序中获取它吗?

java system classpath environment-variables system-properties

35
推荐指数
2
解决办法
2万
查看次数

spark submit在classpath中添加多个jar

我正在尝试运行一个火花程序,其中我有多个jar文件,如果我只有一个jar我无法运行.我想添加位于相同位置的jar文件.我已尝试过以下但它显示了依赖性错误

spark-submit \
  --class "max" maxjar.jar Book1.csv test \
  --driver-class-path /usr/lib/spark/assembly/lib/hive-common-0.13.1-cdh?5.3.0.jar
Run Code Online (Sandbox Code Playgroud)

如何添加另一个位于同一目录下的jar文件?

我想加/usr/lib/spark/assembly/lib/hive-serde.jar.

classpath submit apache-spark

35
推荐指数
6
解决办法
9万
查看次数

combineaccessrules在Eclipse类路径中的含义是什么?

这已经困扰了我多年了,我想你们其中一个好人会知道 - 在Eclipse的.classpath文件中,classpattrytry元素的combineaccessrules属性实际上用于什么?

我可以在Java Build Path配置对话框中看到它可以被maniuplated,但我想不出一个很好的用例.如果我搞砸了设置,或手动修改.classpath文件,它似乎没有任何影响.

我希望其他人能够很好地利用它,我可以窃取他们的想法.基本上,这是一个我想要划伤的痒.

java eclipse classpath

34
推荐指数
1
解决办法
1万
查看次数

如何从不同的JAR中读取多个具有相同名称的资源文件?

如果类路径中有两个JAR文件,则两个JAR文件的根目录中都包含名为"config.properties"的资源.有没有办法检索两个类似的文件getClass().getResourceAsStream()?订单无关紧要.

另一种方法是在类路径中加载匹配某些标准的每个属性文件,如果可能的话.

java classpath

33
推荐指数
1
解决办法
1万
查看次数

可以在运行时将目录添加到类路径吗?

为了更好地理解Java中的工作原理,我想知道我是否可以在运行时动态地将目录添加到类路径中.

例如,如果我使用"java -jar mycp.jar"启动.jar并输出java.class.path属性,我可能会得到:

java.class.path: '.:/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java'
Run Code Online (Sandbox Code Playgroud)

现在可以在运行时修改此类路径以添加另一个目录吗?(例如在使用位于我想添加的目录中的.jar对类进行第一次调用之前).

java classpath

33
推荐指数
3
解决办法
3万
查看次数

Java Spring - 如何使用classpath指定文件位置?

如何使用类路径指定Spring项目中文件的位置?

这就是我目前所拥有的:

FileReader fr = new FileReader("C:\\Users\\Corey\\Desktop\\storedProcedures.sql");
Run Code Online (Sandbox Code Playgroud)

这是我的桌面硬编码.我想要的是能够使用我的项目中的文件的路径.

FileReader fr = new FileReader("/src/main/resources/storedProcedures.sql");
Run Code Online (Sandbox Code Playgroud)

有什么建议?

java spring classpath

33
推荐指数
3
解决办法
10万
查看次数

使用cmd提示符运行java程序时出现"无法找到或加载主类"错误

我正在运行一个简单的"HelloWorld"程序.我在命令提示符中收到此错误:

无法找到或加载主类HelloWorld.

我已经设置了CLASSPATHPATH可变系统.在cmd提示符中,我从我保存HelloWorld程序的目录运行.我可以看到类名和文件名相同,也可以.class在同一目录中创建文件.还有什么可能是问题?

我的示例程序如下所示:

package org.tij.exercises;
public class HelloWorld {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    System.out.println("Hello World!!");
  }
}
Run Code Online (Sandbox Code Playgroud)

java cmd classpath environment-variables

33
推荐指数
3
解决办法
31万
查看次数

无法访问“androidx.lifecycle.HasDefaultViewModelProviderFactory”,它是“FavoriteBottomDialogFragment”的超类型。检查您的模块类别

我在扩展BottomSheetDialogFragment的整个类中出错

Cannot access 'androidx.lifecycle.HasDefaultViewModelProviderFactory' which is a supertype of 'FavoriteBottomDialogFragment'. Check your module classpath for missing or conflicting dependencies
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此处输入图片说明

该类位于 app 模块中,该模块实现了另外两个模块:core 和presentation-core

构建.gradle

dependencies {

     implementation fileTree(dir: 'libs', include: ['*.jar'])
     implementation project (':core')
     implementation project (':presentation-core')

     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.41"
     implementation 'androidx.appcompat:appcompat:1.1.0'
     implementation 'androidx.core:core-ktx:1.2.0'
     testImplementation 'junit:junit:4.12'
     implementation "com.google.android.material:material:1.1.0"

     //Rx
     implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
     implementation "io.reactivex.rxjava2:rxjava:2.2.9"
     //Architecture component
     implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
     implementation 'androidx.room:room-runtime:2.0.0'
     kapt 'androidx.room:room-compiler:2.0.0'
     kapt 'androidx.lifecycle:lifecycle-common-java8:2.0.0'
     implementation 'androidx.room:room-rxjava2:2.0.0'
     implementation 'androidx.room:room-guava:2.0.0'

     implementation 'androidx.recyclerview:recyclerview:1.1.0'
     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

     androidTestImplementation 'androidx.test.ext:junit:1.1.1'
 }
Run Code Online (Sandbox Code Playgroud)

核心依赖

dependencies {
     api fileTree(dir: 'libs', include: …
Run Code Online (Sandbox Code Playgroud)

dependencies android classpath bottom-sheet androidx

33
推荐指数
4
解决办法
1万
查看次数