对不起,我的问题很愚蠢,但作为一个java文盲,我无法回答它.我在CentOS5上运行一个tomcat(5)(用于CAS服务器),当我尝试打开这个URL时http://192.168.1.17:8080/cas-server-webapp-3.3.1/login我收到此错误:
第一个错误:java.lang.NoClassDefFoundError:无法初始化类org.springframework.webflow.util.RandomGuid
和root错误:org.springframework.web.util.NestedServletException:处理程序处理失败; 嵌套异常是java.lang.NoClassDefFoundError:无法初始化类org.springframework.webflow.util.RandomGuid
$ CLASSPATH是空的,这似乎是一个问题,但我不知道该放入什么.
编辑:Jared是对的,我的主机文件将127.0.0.1定义为localhost,现在它工作得很好!
我正在尝试引用Scala Interpreter中使用Eclipse编写和编译的一些类.Eclipse将编译的Java字节代码存储在{workspace}/myProject/bin文件夹中.是否有一些命令将此文件夹添加到Scala Interpreter使用的类路径中?
也许scala.bat应该用一些参数进行编辑或参数化?
我有一个程序需要几个第三方库,目前它的打包方式如下:
zerobot.jar (my file) libs/pircbot.jar libs/mysql-connector-java-5.1.10-bin.jar libs/c3p0-0.9.1.2.jar
据我所知,处理第三方库的"最佳"方法是将它们放在我的jar文件清单中的类路径中,这将在跨平台工作,不会减慢启动速度(将它们捆绑在一起)并且不会遇到法律问题(重新包装可能).
问题在于自己提供第三方库的用户(示例用例,升级它们以修复错误).其中两个库在文件中具有版本号,这增加了麻烦.
我目前的解决方案是我的程序有一个引导过程,它创建一个新的类加载器并使用它来实例化程序.这个自定义类加载器将lib /中的所有.jar文件添加到其类路径中.
我目前的方式工作正常,但我现在在我的应用程序中有两个自定义类加载器,最近对代码的更改导致了难以调试的问题,所以如果有更好的方法我想要消除这种复杂性.对于我确信这是一种非常常见的情况,它似乎也过度工程化了.
所以我的问题是,我该怎么做呢?
我编写了一个Java代码,用于导入外部jar文件.如何在命令行上编译和运行它?
提前致谢!
许多资料来源都提到从类路径加载 ChromeDriver 二进制文件,但我还没有弄清楚如果二进制文件不在类路径根目录中如何执行此操作。
要指定二进制文件的路径,您似乎必须设置系统属性“webdriver.chrome.driver”。首先我尝试:
System.setProperty("webdriver.chrome.driver", "drivers/Chrome/chromedriver.exe");
Run Code Online (Sandbox Code Playgroud)
但我得到了一个错误,它似乎正在寻找该位置的驱动程序"C:\<working directory of my application process>\drivers\Chrome\chromedriver.exe"。这里的工作目录实际上是我的源代码存放的目录。
然后我尝试:
System.setProperty("webdriver.chrome.driver", "/drivers/Chrome/chromedriver.exe");
Run Code Online (Sandbox Code Playgroud)
然而同样的事情发生了——这次它正在寻找"C:\drivers\Chrome\chromedriver.exe"。
使用“webdriver.chrome.driver”属性或任何其他配置方式时,如何让 ChromeDriver 在类路径上查找 ChromeDriver 二进制文件?
我正在制作一个在测试阶段运行的 Maven 插件,在使用我的插件的项目的 pom.xml 配置中,我正在设置一个类规范名称,我想用它来从我的插件运行该类,基本上我'我正在寻找一种方法,可以从我的插件中动态加载项目中的类。
Class clazz = Class.forName("... class from pom.xml ...")
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到预期的“ClassNotFoundException”,似乎类加载器不相同或未共享。
有办法做到吗?就像从项目中捕获类加载器或通过依赖项注入到我的插件中接收它一样?什么是最好的方法?
我正在从 TeamCity 运行我的代码,但它在编译时出现问题,并告诉我该包不存在。
\n\n我认为我的代码不在类路径上,所以我需要以不同的方式重新配置 Maven。努力寻找这方面的任何信息。
\n\n我将系统变量和 POM 粘贴在下面:
\n\nCLASSPATH = .;%JAVA_HOME%\\lib;%JAVA_HOME%\\jre\\lib\nJAVA_HOME = C:\\Program Files\\Java\\jdk-9.0.4\nJDK_HOME = %JAVA_HOME%\nJRE_HOME = C:\\TeamCity\\jre\nPath = "C:\\Projects\\BDD\\MDA Online Framework\\Maven\\apache-maven-3.5.4"\\bin;%JAVA_HOME%\\bin;other path stuff here\nM2_HOME = "C:\\Projects\\BDD\\MDA Online Framework\\Maven\\apache-maven-3.5.4"\nMAVEN_HOME = "C:\\Projects\\BDD\\MDA Online Framework\\Maven\\apache-maven-3.5.4"\nRun Code Online (Sandbox Code Playgroud)\n\nPOM在这里:
\n\n编辑:我现在添加了一个值,<testSourceDirectory>因为它丢失了。但错误仍然存在。
<project>\n <modelVersion>4.0.0</modelVersion>\n <groupId>com.mycompany.app</groupId>\n <artifactId>my-app</artifactId>\n <version>1</version>\n <properties>\n <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n </properties>\n <dependencies>\n <dependency>\n <groupId>info.cukes</groupId>\n <artifactId>cucumber-java8</artifactId>\n <version>1.2.2</version>\n <scope>test</scope>\n </dependency>\n <dependency>\n <groupId>info.cukes</groupId>\n <artifactId>cucumber-junit</artifactId>\n <version>1.2.5</version>\n <scope>test</scope>\n </dependency>\n <dependency>\n <groupId>org.seleniumhq.selenium</groupId>\n <artifactId>selenium-server</artifactId>\n <version>3.5.3</version>\n <scope>test</scope>\n </dependency>\n <dependency>\n <groupId>junit</groupId>\n <artifactId>junit</artifactId>\n <version>4.12</version>\n <scope>test</scope>\n </dependency>\n <dependency>\n <groupId>com.google.guava</groupId>\n <artifactId>guava</artifactId>\n <version>22.0</version>\n …Run Code Online (Sandbox Code Playgroud) 我知道你不能改变Java 9 中的类路径,因为我读到了这个:Add jar to classpath at runtime under java 9
我只想列出当前在类路径上的 jar 文件和文件夹,以便我可以为 Java 编译器构建命令行参数。
// Construct compile command options
// According to: http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/javac.html
// The directory specified by -d is not automatically added to your
// classpath, so we'll add it manually.
String[] args = new String[] {"-d", classDir,
"-classpath", classPath,
"-encoding", "UTF-8",
srcFile};
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int ret = compiler.run(null, out, err, args);
Run Code Online (Sandbox Code Playgroud)
为了在 Java 8 中构建类路径,我将其强制转换为 URLClassLoader,这在 Java 9 中是非法的: …
当我们想要扩展 JVM 类路径时,在 ConfigMap 上托管 java jar 文件是个好主意吗?
通常,应用程序本身被烘焙到 docker 镜像中,但扩展它(通过插件 jar 等)需要附加卷、将 jar 文件复制到卷并重新启动 pod,但您需要一个卷来执行此操作。另一种选择是直接将 jar 作为二进制对象放入 ConfigMap 中并重新启动 pod。后者似乎更容易、更快,并且应该适用于小尺寸的jar 文件。
我在其他帖子中找不到此错误的正确答案。我正在使用 Maven 在 VS Code 中构建我的项目,每当我创建一个类时,都会出现此错误。我需要对 .classpath 文件执行任何操作吗?如果我弄错了,请纠正我,此错误指出该类未被其所属的 .classpath 文件识别,因此我必须在该文件中解决它。
总氮
classpath ×10
java ×8
maven ×3
centos5 ×1
classloader ×1
command-line ×1
configmap ×1
dependencies ×1
interpreter ×1
jar ×1
java-9 ×1
javac ×1
kubernetes ×1
linux ×1
packaging ×1
plugins ×1
scala ×1
tomcat ×1
webdriver ×1