Problema de classpath com o Sigar [RESOLVIDO]

1 resposta
Rafael_Costa_Teixeir

Ola pessoal ,

Boa tarde a todos !!!

Sou novo em java e estou levando uma “surra” do classpath para fazer esse programa de exemplo do Sigar funcionar.

Linha de comando para compilar (compila normalmente e gera o arquivo CpuInfo.class):

C:\Users\Rafael\Desktop>javac -classpath .;hyperic-sigar-1.6.4\sigar-bin\lib\sigar.jar CpuInfo.java

C:\Users\Rafael\Desktop>

Linha de comando ao executar e o erro gerado:

C:\Users\Rafael\Desktop>java -classpath .;hyperic-sigar-1.6.4\sigar-bin\lib\sigar.jar CpuInfo
Exception in thread "main" java.lang.NoClassDefFoundError: CpuInfo (wrong name:
org/hyperic/sigar/cmd/CpuInfo)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: CpuInfo.  Program will exit.

C:\Users\Rafael\Desktop>

Codigo fonte do arquivo CpuInfo.java

package org.hyperic.sigar.cmd;

import org.hyperic.sigar.CpuPerc;
import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.SigarLoader;
import org.hyperic.sigar.SigarException;

/**
 * Display cpu information for each cpu found on the system.
 */
public class CpuInfo extends SigarCommandBase {

    public boolean displayTimes = true;
    
    public CpuInfo(Shell shell) {
        super(shell);
    }

    public CpuInfo() {
        super();
    }

    public String getUsageShort() {
        return "Display cpu information";
    }

    private void output(CpuPerc cpu) {
        println("User Time....." + CpuPerc.format(cpu.getUser()));
        println("Sys Time......" + CpuPerc.format(cpu.getSys()));
        println("Idle Time....." + CpuPerc.format(cpu.getIdle()));
        println("Wait Time....." + CpuPerc.format(cpu.getWait()));
        println("Nice Time....." + CpuPerc.format(cpu.getNice()));
        println("Combined......" + CpuPerc.format(cpu.getCombined()));
        println("Irq Time......" + CpuPerc.format(cpu.getIrq()));
        if (SigarLoader.IS_LINUX) {
            println("SoftIrq Time.." + CpuPerc.format(cpu.getSoftIrq()));
            println("Stolen Time...." + CpuPerc.format(cpu.getStolen()));
        }
        println("");
    }

    public void output(String[] args) throws SigarException {
        org.hyperic.sigar.CpuInfo[] infos =
            this.sigar.getCpuInfoList();

        CpuPerc[] cpus =
            this.sigar.getCpuPercList();

        org.hyperic.sigar.CpuInfo info = infos[0];
        long cacheSize = info.getCacheSize();
        println("Vendor........." + info.getVendor());
        println("Model.........." + info.getModel());
        println("Mhz............" + info.getMhz());
        println("Total CPUs....." + info.getTotalCores());
        if ((info.getTotalCores() != info.getTotalSockets()) ||
            (info.getCoresPerSocket() > info.getTotalCores()))
        {
            println("Physical CPUs.." + info.getTotalSockets());
            println("Cores per CPU.." + info.getCoresPerSocket());
        }

        if (cacheSize != Sigar.FIELD_NOTIMPL) {
            println("Cache size...." + cacheSize);
        }
        println("");

        if (!this.displayTimes) {
            return;
        }

        for (int i=0; i<cpus.length; i++) {
            println("CPU " + i + ".........");
            output(cpus[i]);
        }

        println("Totals........");
        output(this.sigar.getCpuPerc());
    }

    public static void main(String[] args) throws Exception {
        new CpuInfo().processCommand(args);
    }
}

Procurei no Google mas não consegui encontrar uma solução para esse problema.

Desde ja agradeço pela atenção.

1 Resposta

Rafael_Costa_Teixeir

Pessoal ,

Boa noite a todos !!!

Andei mexendo aqui , não consegui executar esse exemplo mas lendo melhor o javadoc , consegui criar um que funcionou sem problemas , segue codigo abaixo para que tambem estiver com a mesma dificuldade que tive:

import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.Mem;
import org.hyperic.sigar.SysInfo;
import org.hyperic.sigar.Swap;


import org.hyperic.sigar.SigarException;
class SistemaInfo {

public static void main(String[] args) {

try {
Sigar info = new Sigar();
Mem memoria = new Mem();
Swap swap = new Swap();
swap.gather(info);
SysInfo sys = new SysInfo();
sys.gather(info);
memoria.gather(info);

System.out.printf("Arquitetura:" + sys.getArch() + "\n");
System.out.printf("Descrição:" + sys.getDescription() + "\n");
System.out.printf("Maquina:" + sys.getMachine() + "\n");
System.out.printf("Nome:" + sys.getName() + "\n");
System.out.printf("Patch:" + sys.getPatchLevel()+ "\n");
System.out.printf("Vendedor:" + sys.getVendor()+ "\n");
System.out.printf("Vendedor (Cod nome):" + sys.getVendorCodeName() + "\n");
System.out.printf("Vendedor (Nome):" + sys.getVendorName() + "\n");
System.out.printf("Vendedor (Versão):" + sys.getVendorVersion() + "\n");
System.out.printf("Versão:" + sys.getVersion() + "\n\n");


System.out.printf("Mwmoria Total:" + memoria.getTotal() / 1024 / 1024 + "\n");
System.out.printf("Memoria Utilizada:" + memoria.getUsed() / 1024 / 1024 + "\n");
System.out.printf("Memoria Livre:" + memoria.getFree() / 1024 / 1024 + "\n\n");

System.out.printf("Memoria Swap Total:" + swap.getTotal() / 1024 / 1024 + "\n");
System.out.printf("Memoria Swap Utilizada:" + swap.getUsed() / 1024 / 1024 + "\n");
System.out.printf("Memori Swap Livre:" + swap.getFree() / 1024 / 1024 + "\n");

} catch(SigarException e) {
	System.out.println(e);
	}
	
 }
 
}

E para compilar use:

C:\Users\Rafael\Desktop>javac -classpath .;hyperic-sigar-1.6.4\sigar-bin\lib\sigar.jar SistemaInfo.java

E para executar:

C:\Users\Rafael\Desktop>java -classpath .;hyperic-sigar-1.6.4\sigar-bin\lib\sigar.jar SistemaInfo
Criado 30 de março de 2011
Ultima resposta 31 de mar. de 2011
Respostas 1
Participantes 1