首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >还有另一个类路径java

还有另一个类路径java
EN

Stack Overflow用户
提问于 2017-11-08 18:26:17
回答 1查看 152关注 0票数 0

你好,我遇到了一些CLASSPATh和编译方面的问题。

我有这个测试代码:

代码语言:javascript
复制
package prova;
import cat.almata.daw.utils.Log;

public class ProvaUtils {

    public static void main(String[] args) {

        try{
            System.out.println("------ Testing DAW Utils ---");

            System.out.println("--- Testing Log class ---"); 
            Log logTest = new Log("logTest.log");

            System.out.println("Going to write an Info");
            logTest.info("Some information to write in the log");

            System.out.println("Going to write a Warning");
            logTest.warning("Some warning to write in the log");

            System.out.println("Going to write an Error");
            logTest.error("Some error to write in the log");
            System.out.println("Hola Mon");


        }catch(Exception e){
            //System.out.println("An Exception has been thrown, with message:" + e.getMessage());
            e.printStackTrace();
        }
    }

}

所以我得到了一个DAWUtils.jar,它包含在Log的.class中。如果解压缩这个jar,就会得到路径cat -> almata -> daw -> utils -> Log.class。

所以我需要Log.class来执行我的测试代码。

我的文件夹:

代码语言:javascript
复制
practicaJava/
├── DAWUtils.jar
├── MANIFEST.MF
├── prova
│   ├── ProvaUtils.java

当我想编译和执行(使用Jar)时:

代码语言:javascript
复制
eduardo@MiPcLinux:~/Descargas/practicaJava$ javac -classpath "/home/eduardo/Descargas/practicaJava/DAWUtils.jar" ./prova/ProvaUtils.java
eduardo@MiPcLinux:~/Descargas/practicaJava$ java prova.ProvaUtils ------ Testing DAW Utils ---
--- Testing Log class ---
Exception in thread "main" java.lang.NoClassDefFoundError: cat/almata/daw/utils/Log
    at prova.ProvaUtils.main(ProvaUtils.java:13)
Caused by: java.lang.ClassNotFoundException: cat.almata.daw.utils.Log
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

如果我在同一个文件夹中解压jar,它就能正常工作;

$jar xvf DAWUtils.jar

并具有:

eduardo@MiPcLinux:~/Descargas$ tree practicaJava/

代码语言:javascript
复制
practicaJava/
├── cat
│   └── almata
│       └── daw
│           └── utils
│               └── Log.class
├── DAWUtils.jar
├── MANIFEST.MF
├── META-INF
│   └── MANIFEST.MF
└── prova
       └── ProvaUtils.java

我正在运行我的文件夹practicaJava中的所有指令。所以它不应该以这种方式工作,我认为如果我有jar文件,它必须获得Log.class并在不需要解压缩的情况下工作。所以我把它解压,放在DAWUtils.jar里面

我还需要制作一个jar (包括MAnifest.mf中的.jar ),但由于同样的原因,它不能工作:

$jar cvfm ProvaUtils.jar MANIFEST.MF prova/ DAWUtils.jar

使用Manifest.mf:

代码语言:javascript
复制
Manifest-Version: 1.0
Created-By: 1.5.0_06 (BEA Systems, Inc.)
Main-Class: prova.ProvaUtils
Class-Path: /home/eduardo/Descargas/practicaJava/DAWUtils.jar

似乎我需要将DAWUtils.jar解压成work.As,你可以在Ubuntu Linux中看到im。

任何帮助都会被感谢。

应以下方面的要求:

代码语言:javascript
复制
eduardo@MiPcLinux:~/Descargas/practicaJava$ javac -classpath "/home/eduardo/Descargas/practicaJava/prova/DAWUtils.jar" ./prova/ProvaUtils.java 
eduardo@MiPcLinux:~/Descargas/practicaJava$ java prova.ProvaUtils ------ Testing DAW Utils ---
--- Testing Log class ---
Exception in thread "main" java.lang.NoClassDefFoundError: cat/almata/daw/utils/Log
    at prova.ProvaUtils.main(ProvaUtils.java:13)
Caused by: java.lang.ClassNotFoundException: cat.almata.daw.utils.Log
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-11-08 20:37:50

解决方案是使用.:DAWUtils.jar引用DAWUtils.jar

所以:$ javac -classpath .:DAWUtils.jar ./prova/ProvaUtils.java

工作,然后:

$ java -classpath .:DAWUtils.jar prova.ProvaUtils

去执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47177215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档