相关疑难解决方法(0)

如何运行JAR文件

我创建了一个这样的JAR文件:

jar cf Predit.jar *.*
Run Code Online (Sandbox Code Playgroud)

我通过双击它来运行这个JAR文件(它不起作用).所以我从DOS提示符运行它,如下所示:

java -jar Predit.jar
Run Code Online (Sandbox Code Playgroud)

它引发了"无法加载主类"异常.所以我解压缩了这个JAR文件:

jar -xf Predit.jar
Run Code Online (Sandbox Code Playgroud)

我运行了类文件:

java Predit
Run Code Online (Sandbox Code Playgroud)

它运作良好.我不知道为什么JAR文件不起作用.请告诉我运行JAR文件的步骤

java jar

192
推荐指数
6
解决办法
61万
查看次数

什么是Java ClassLoader?

在几个简单的句子中,什么是Java ClassLoader,何时使用以及为什么?

好的,我读了一篇wiki文章.ClassLoader加载类.好.因此,如果我包含jar文件并导入,则ClassLoader可以完成这项工作.

我为什么要打扰这个ClassLoader?我从未使用它,也不知道它存在.

问题是,为什么ClassLoader类存在?而且,你如何在实践中使用它?(案件存在,我知道.)

java classloader

169
推荐指数
5
解决办法
5万
查看次数

如何增加Java堆栈大小?

我问这个问题是为了了解如何在JVM中增加运行时调用堆栈的大小.我已经得到了答案,我还得到了许多有用的答案和评论,这些答案和评论与Java如何处理需要大型运行时堆栈的情况有关.我已经用答案摘要扩展了我的问题.

最初我想增加JVM堆栈大小,所以程序就像没有运行的程序一样StackOverflowError.

public class TT {
  public static long fact(int n) {
    return n < 2 ? 1 : n * fact(n - 1);
  }
  public static void main(String[] args) {
    System.out.println(fact(1 << 15));
  }
}
Run Code Online (Sandbox Code Playgroud)

相应的配置设置是java -Xss...具有足够大值的命令行标志.对于TT上面的程序,它与OpenJDK的JVM一样:

$ javac TT.java
$ java -Xss4m TT
Run Code Online (Sandbox Code Playgroud)

其中一个答案还指出,这些-X...标志是依赖于实现的.我在用

java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.1) (6b18-1.8.1-0ubuntu1~8.04.3)
OpenJDK 64-Bit Server VM (build 16.0-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

也可以仅为一个线程指定一个大堆栈(参见其中一个答案如何).建议使用此方法java -Xss...以避免为不需要它的线程浪费内存.

我很好奇上面的程序需要多大的堆栈,所以我运行它n增加了:

  • -Xss4m就足够了 fact(1 …

java stack-overflow stack

114
推荐指数
4
解决办法
17万
查看次数

Eclipse没有使用NoClassDefFoundError引起的JUnit 5测试

问题

每当我运行我的项目JUnit测试(使用JUnit 5与Java 9和Eclipse Oxygen 1.a)我遇到eclipse无法找到任何测试的问题.

说明

在运行配置下,eclipse甚至找不到用@Test注释的方法,而是只显示" (所有方法) ".以下图片有望为我的设置提供更好的一瞥:

https://imgur.com/a/FTe9c

控制台输出:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试了什么

我已经试过了

  • 从构建路径中删除测试文件夹并再次添加.
  • 将鼠标悬停在使用@Test注释的方法上开始测试,然后单击"Run as JUnit Test".
  • 从Buildpath中删除JUnit并再次添加
  • 重启日食
  • 我还将项目整个项目从一台机器移动到另一台机器,并在那里使用提供的eclipse安装进行了尝试
  • 重命名测试方法.
  • 重新键入@Test注释

其中一些步骤可以在这里找到,但最终问题仍然存在.

java eclipse junit java-9 junit5

64
推荐指数
14
解决办法
7万
查看次数

引起者:java.lang.NoClassDefFoundError:org/apache/log4j/Logger

我有一个有趣的问题,在运行时没有找到org.apache.log4j.Logger类.我正在尝试获得授权,这就是它失败的地方:

OAuthAuthorizer oauthAuthorizer = new OAuthAuthorizer(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET, SAML_PROVIDER_ID, userId);

我正在使用JDeveloper 11.1.1.6.这就是我所知道的:

  1. 我查看了我的UI.war/WEB-INF/lib目录,我看到了log4j-1.2.17.jar.

  2. 抱怨它的类是org.opensaml.xml.XMLConfigurator

    Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
        at org.opensaml.xml.XMLConfigurator.<clinit>(XMLConfigurator.java:60)
        at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:195)
        at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:91)
        at com.intuit.ipp.aggcat.util.SAML2AssertionGenerator.getSAMLBuilder(SAML2AssertionGenerator.java:156)
        at com.intuit.ipp.aggcat.util.SAML2AssertionGenerator.createSubject(SAML2AssertionGenerator.java:187)
        at com.intuit.ipp.aggcat.util.SAML2AssertionGenerator.buildAssertion(SAML2AssertionGenerator.java:114)
        at com.intuit.ipp.aggcat.util.SAML2AssertionGenerator.generateSignedAssertion(SAML2AssertionGenerator.java:83)
        at com.intuit.ipp.aggcat.util.SamlUtil.createSignedSAMLPayload(SamlUtil.java:156)
        at com.intuit.ipp.aggcat.util.OAuthUtil.getOAuthTokens(OAuthUtil.java:60)
        at com.intuit.ipp.aggcat.core.OAuthAuthorizer.<init>(OAuthAuthorizer.java:85)
        at com.incomemax.view.intuit.WebUtil.getAggCatService(WebUtil.java:91)
    
    Run Code Online (Sandbox Code Playgroud)
    Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:305)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:246)
        ... 64 more
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我解压缩了XMLConfigurator,奇怪的是它没有导入org.apache.log4j.Logger它使用org.slf4j.Logger,它也在我的jars目录中(slf4j-api-1.7.5.jar).同样有趣的是,第60行(参见堆栈跟踪)是我的反编译中的空行.

  4. 当然,如果我在设计时添加Logger.xxxxx,它会发现它很好.

  5. 我直接从示例java代码中使用代码/ jar,但导入到我现有的应用程序中.

我一直在网上寻找答案,我相信我已经检查了所有我能想到的领域.我也引用了这个非常好的页面:http://myarch.com/classnotfound/

鉴于授权是使用Intuit Developer API的第1步,我有点卡住了.

从@jhadesdev建议中添加输出:

所有版本的log4j Logger:

  • 邮编:C:/Users/Chris/AppData/Roaming/JDeveloper/system11.1.1.6.38.61.92/DefaultDomain/servers/DefaultServer/tmp/_WL_user/j2ee-app/lt5l71/war/WEB-INF/lib/log4j-1.2 .17.jar!/org/apache/log4j/Logger.class

从OAuthAuthorizer类的类加载器可以看到所有版本的log4j:

  • 邮编:C:/Users/Chris/AppData/Roaming/JDeveloper/system11.1.1.6.38.61.92/DefaultDomain/servers/DefaultServer/tmp/_WL_user/j2ee-app/lt5l71/war/WEB-INF/lib/log4j-1.2 .17.jar!/org/apache/log4j/Logger.class

所有版本的XMLConfigurator:

  • 罐子:文件:/ …

java logging classpath classloader intuit-partner-platform

42
推荐指数
4
解决办法
20万
查看次数

如何使用mockMvc检查响应体中的JSON

这是我的控制器里面的方法,注释方法是 @Controller

@RequestMapping(value = "/getServerAlertFilters/{serverName}/", produces = "application/json; charset=utf-8")
    @ResponseBody
    public JSONObject getServerAlertFilters(@PathVariable String serverName) {
        JSONObject json = new JSONObject();
        List<FilterVO> filteredAlerts = alertFilterService.getAlertFilters(serverName, "");
        JSONArray jsonArray = new JSONArray();
        jsonArray.addAll(filteredAlerts);
        json.put(SelfServiceConstants.DATA, jsonArray);
        return json;
    }
Run Code Online (Sandbox Code Playgroud)

我期待着{"data":[{"useRegEx":"false","hosts":"v2v2v2"}]}作为我的json.

这是我的JUnit测试:

@Test
    public final void testAlertFilterView() {       
        try {           
            MvcResult result = this.mockMvc.perform(get("/getServerAlertFilters/v2v2v2/").session(session)
                    .accept("application/json"))
                    .andDo(print()).andReturn();
            String content = result.getResponse().getContentAsString();
            LOG.info(content);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是控制台输出:

MockHttpServletResponse:
              Status = 406
       Error message = null
             Headers = {} …
Run Code Online (Sandbox Code Playgroud)

java junit spring mocking spring-test-mvc

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

Eclipse警告:不会导出或发布XXXXXXXXXXX.jar.可能会导致运行时ClassNotFoundExceptions

我在Eclipse上的构建路径中放置了所需的文件后,我一直收到以下错误.我正在开发一个Spring MVC Hello World Application.我正在为Java EE开发人员运行Eclipse Helios:

Jan 16, 2012 1:25:42 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /SpringMVCTutorial threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我试过右键单击服务器并单击"清除".我右键单击该应用程序,单击"构建路径","配置构建路径",并将正确的.jar文件放入库中; 但是,它仍然不承认它们是依赖关系.我错过了什么?

我已经尝试过提出的建议: eclipse helios:tomcat project - jar不会被导出或发布.运行时可能会导致ClassNotFoundExceptions

  1. 右键单击您的Web项目
  2. 单击属性
  3. 选择Java EE Module Dependencies
  4. 单击"Web库"选项卡
  5. 添加外部jar(如果jar在项目之外).将在Jar/Module下添加一个条目,确保单击复选框(选中).

问题是,当我选择"单击属性"时,我没有选择单击Java EE模块依赖项,因为它没有出现.我下载了任何额外的Java EE工具但仍无法找到它.

spring-mvc eclipse-3.6

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

在 Android Studio 3.6.1 中获取 java.lang.NoClassDefFoundError: com/android/resources/ResourceFolderType

有没有人在运行项目时见过这个

Error:Module 'Android' production: java.lang.NoClassDefFoundError: com/android/resources/ResourceFolderType
Run Code Online (Sandbox Code Playgroud)

我在 Android Studio 3.6.1 上使用 Eclipse 编译器 没有什么有用的显示在 google 上

java android android-studio

23
推荐指数
1
解决办法
6351
查看次数

ClassNotFoundException与NoClassDefFoundError

我已经完成了这个线程是什么原因以及NoClassDefFoundError和ClassNotFoundException之间有什么区别? 这是一个在线程中具有max ups的ans之一: NoClassDefFoundError:"因此,当源成功编译时,似乎会发生 NoClassDefFoundError ,但是在运行时,找不到所需的类文件.这可能是在分发或生成JAR文件时可能发生的事情,其中​​并未包含所有必需的类文件."

ClassNotFoundException:对于ClassNotFoundException,它似乎可能源于尝试在运行时对类进行反射调用,但程序试图调用的类不存在.

我做了一个小实验.我创建了一个主类,类A,并尝试从中调用其他类,类B,编译成功.

然后我删除了在类A中调用的类B.我得到了 java.lang.ClassNotFoundException但是根据脚步中的答案,我应该得到NoClassDefFoundError(源代码已成功编译,但未找到运行时类文件)任何人都可以解释我在线程中对ans的解释中缺少什么?

package com.random;

public class A {

    public static void main(String[] args) {
        B b= new B();

    }

}

 package com.random;

public class B {



}
Run Code Online (Sandbox Code Playgroud)

java exception noclassdeffounderror classnotfoundexception

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

带 Logback 的 SLF4J:NoClassDefFoundError:org/slf4j/impl/StaticLoggerBinder

我正在尝试特别使用 SLF4J 和 Logback 来实现 RollingFile Logger,但我遇到了一个无法解决的异常。这里是:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.getLoggerContext(LogbackLoggingSystem.java:293)
    at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:118)
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:232)
    at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131)
    at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:76)
    at org.springframework.boot.SpringApplicationRunListeners.lambda$starting$0(SpringApplicationRunListeners.java:53)
    at java.util.ArrayList.forEach(ArrayList.java:1259)
    at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117)
    at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:53)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:317)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1313)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1302)
    at com.upnetix.java.simeonyachev.PlexUserNameApplication.main(PlexUserNameApplication.java:13)
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
    ... 17 more
Run Code Online (Sandbox Code Playgroud)

那是我的 pom.xml :

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.4</version>
        <relativePath/>
    </parent>

    <dependencies>
        <!--SPRING BOOT-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
<!--            <exclusions>-->
<!-- …
Run Code Online (Sandbox Code Playgroud)

java noclassdeffounderror logback slf4j spring-logback

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