在Eclipse中用RUN执行JNI调用好使,JSP或者是在GUI调用就找不到JAR包?我快把DLL放遍操作系统了,环境变量也配置了,怎么还是这个错误啊
0 [main] DEBUG Sigar  - Unable to find sigar.jar
org.hyperic.sigar.SigarException: Unable to find sigar.jar
at org.hyperic.sigar.Sigar.loadLibrary(Sigar.java:158)
at org.hyperic.sigar.Sigar.<clinit>(Sigar.java:90)
at lab.sigar.CpuData.smain(CpuData.java:47)
at hellorcp.DetailView.<init>(DetailView.java:102)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:170)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:788)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:244)
at org.eclipse.ui.internal.registry.ViewDescriptor.createView(ViewDescriptor.java:69)
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:327)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:227)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:592)
at org.eclipse.ui.internal.WorkbenchPage$ActivationList.setActive(WorkbenchPage.java:4080)
at org.eclipse.ui.internal.WorkbenchPage$17.runWithException(WorkbenchPage.java:3145)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:801)
at org.eclipse.ui.internal.Workbench$25.runWithException(Workbench.java:1342)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:129)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2309)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at hellorcp.intro.Application.start(Application.java:26)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:169)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:508)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:447)
at org.eclipse.equinox.launcher.Main.run(Main.java:1173)
at org.eclipse.equinox.launcher.Main.main(Main.java:1148)

解决方案 »

  1.   

    sigar.jar找不到啊,这个是您自己打的jar包,还是应用别人的包,如果是java项目,您可以把这个jar包拷贝到bin目录下试试
      

  2.   

    SIGAR 是开源项目 用于在JAVA中获取系统(硬件)信息 比如CPU 型号 内存大小 网卡信息等等 支持几乎所有平台所以这个是我用的别人的,我刚试了 把sigar.jar放哪都还报错 怎么办啊
      

  3.   

    public void smain() throws Exception
    {
            Sigar sigar = new Sigar();                  //行号47,这行就报错了
            CpuData cpuData = CpuData.gather(sigar);
    XStream xstream = new XStream();
    xstream.alias("CpuData", CpuData.class);
    System.out.println(xstream.toXML(cpuData));

    }
      

  4.   

    編程王網站 www. king  of coders  .com
    asdasdasd
      

  5.   

    sigar.jar放到项目的bin目录下,然后 重新编译一下项目,在启动服务器试试。
      

  6.   

    首先介绍一下环境变量的设置方法:(这里以jdk1.6来安装,其他版本一样)
    在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用。         首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME”、“path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在的。而JAVA_HOME和classpath是不存在的。 
            点“新建”,然后在变量名写上JAVA_HOME,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“C:\jdk1.6”。(注: 如果安装的路径不是磁盘C或者不是在jdk1.6这个文件夹,可对应修改。以下文字都是假定安装在C:\jdk1.6里面。)
            其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“.;%JAVA_HOME%\bin”,(其中“%JAVA_HOME%”的意思为刚才设置JAVA_HOME的值),也可以直接写上“C:\jdk1.6\bin” 
    最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar (要加.表示当前路径)”,与相同“%JAVA_HOME%有相同意思” 
              以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”->“运行”,打入“cmd”,进入dos系统界面。然后打“java -version”,如果安装成功。系统会显示java version jdk"1.6.0"。 
    确保安装在C盘文件名为jdk1.6,环境变量直接复制就可以了 ,在dos界面中输入javac来查看该命令是否合法,同样输入java来查看该命令是否合法
              这样环境变量就设置好了,下面进行对PATH,CLASSPTH,JAVA_HOME的讲解 以下为置JAVA_HOME,CLASSPATH,PATH的目的: 
    1,设置JAVA_HOME: 
        一、为了方便引用,比如,你JDK安装在C:\Program Files\Java\jdk1.6.0目录里,则设置JAVA_HOME为该目录路径, 那么以后你要使用这个路径的时候, 只需输入%JAVA_HOME%即可, 避免每次引用都输入很长的路径串; 
        二、归一原则, 当你JDK路径被迫改变的时候, 你仅需更改JAVA_HOME的变量值即可, 否则,你就要更改任何用绝对路径引用JDK目录的文档, 要是万一你没有改全, 某个程序找不到JDK, 后果是可想而知的----系统崩溃! 
        三、第三方软件会引用约定好的JAVA_HOME变量, 不然, 你将不能正常使用该软件, 以后用JAVA久了就会知道, 要是某个软件不能正常使用, 不妨想想是不是这个问题. 2,设置CLASSPATH: 
          这是一个很有趣,当然也比较折磨初学者的问题, 这个变量设置的目的是为了程序能找到相应的".class"文件, 不妨举个例子: 你编译一个JAVA程序---A.java, 会得到一个A.class的类文件,你在当前目录下执行java A, 将会得到相应的结果(前提是你已经设置CLASSPATH为"."). 现在, 你把A.class移到别的目录下(例如:"e:\"), 执行java A, 将会有NoClassDefFindError的异常,原因就是找不到.class文件, 现在你把CLASSPATH增加为:".;e:\"再运行java A, 看看会有什么结果~~:)~~~, 一切正常, java命令通过CLASSPATH找到了.class文件! 3,设置PATH: 
          道理很简单, 你想在任何时候都使用%JAVA_HOME%\bin\java 等来执行java命令吗, 当然不会, 于是, 你可以选择把 %JAVA_HOME%\bin添加到PATH路径下, 这样, 我们在任何路径下就可以仅用java来执行命令了.(当你在命令提示符窗口输入你个代码时,操作系统会在当前目录和PATH变量目录里查找相应的应用程序, 并且执行.) 
      

  7.   

            Sigar sigar = new Sigar();     
    这里写上你的放的包名
      

  8.   

    sigar.jar放到项目的bin目录下,然后 重新编译一下项目,在启动服务器试试。
      

  9.   

    1.没加vm参数
    -Djava.library.path=C:/project_path/dll_lib2.你程序本身的classloader和Sigar的classloader不一致两个都有可能
      

  10.   

    我在eclipse里的RUN Dialog里 自变量-》VM自变量放了下面的内容:-Djava.library.path  
    .;
    D:\workspace\hellorcp\jars; //此行是2个DLL放的位置
    C:\jre1.6.0_05\bin;
    C:\WINDOWS\Sun\Java\bin;
    C:\WINDOWS\system32;
    C:\WINDOWS;
    C:\jdk1.6.0_05;
    %CATALINA_HOME%;
    F:\oracle\product\10.2.0\db_1\bin;
    C:\WINDOWS\system32;
    C:\WINDOWS;
    C:\WINDOWS\System32\Wbem;
    d:\glassfish\lib\ant\bin;
    C:\Program Files\润乾报表\ReportDesign\jdk1.4;
    C:\Program Files\MySQL\MySQL Server 5.0\bin;
    C:\Program Files\StormII\Codec;
    C:\Program Files\StormII;
    C:\Program Files\SSH Communications Security\SSH Secure Shell报错:java.lang.NoClassDefFoundError: /;
    Caused by: java.lang.ClassNotFoundException: .;
    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)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    Exception in thread "main" 
      

  11.   

    -Djava.library.path要加=号而且后面跟的是放dll的文件夹路径,跟classpath不一样的
      

  12.   


    我改成你最上面那个帖子那样也是报错啊 -Djava.library.path=D:\workspace\hellorcp\jars
    D:\workspace\hellorcp\jars里面就有2个DLL啊 还是报那个错的!你有MSN或者QQ吗?远程协助一下吧 试得我都麻木了。
      

  13.   

    首先介绍一下环境变量的设置方法: (这里以jdk1.6来安装,其他版本一样) 
    在把jdk安装到计算机中之后,我们来进行设置使java环境能够使用。         首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME”、“path”、“classpath”,其中在没安装过jdk的环境下。path属性是本来存在的。而JAVA_HOME和classpath是不存在的。 
            点“新建”,然后在变量名写上JAVA_HOME,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径“C:\jdk1.6”。(注: 如果安装的路径不是磁盘C或者不是在jdk1.6这个文件夹,可对应修改。以下文字都是假定安装在C:\jdk1.6里面。) 
            其次在系统变量里面找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别java命令,则变量值为“.;%JAVA_HOME%\bin”,(其中“%JAVA_HOME%”的意思为刚才设置JAVA_HOME的值),也可以直接写上“C:\jdk1.6\bin” 
    最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别。其值为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\toos.jar (要加.表示当前路径)”,与相同“%JAVA_HOME%有相同意思” 
              以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”->“运行”,打入“cmd”,进入dos系统界面。然后打“java -version”,如果安装成功。系统会显示java version jdk"1.6.0"。 
    确保安装在C盘文件名为jdk1.6,环境变量直接复制就可以了 ,在dos界面中输入javac来查看该命令是否合法,同样输入java来查看该命令是否合法