CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

关于java调用dll的问题

楼主justinzhai(独孤野猪)2004-12-01 17:34:50 在 Java / 框架、开源 提问

目前有一个类,用来调用一个dll动态链接库,但是这个类没有package,而如果把这个类的顶端加上package则会在调用dll时报错,而没有package的时候别的java程序又不能调用这个类,没法import,请问有没有什么变通的方法 问题点数:100、回复次数:12Top

1 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2004-12-01 17:39:35 得分 0

加进package,然后调用dll时用绝对路径  
  Top

2 楼redex(cc)回复于 2004-12-01 17:41:52 得分 0

adaptorTop

3 楼justinzhai(独孤野猪)回复于 2004-12-01 17:52:36 得分 0

jFresH_MaN()(AbsolutelyFresh)(java欣人)    
   
  加进package,然后调用dll时用绝对路径  
   
  不行啊,怎么写绝对路径呢?  
  "c:/windows/system32/xxx.dll"???这样反而找不到dllTop

4 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2004-12-01 17:57:32 得分 0

那我想问一下你的dll是不是用jni做的?  
  如果不是,怎么样也调用不了Top

5 楼justinzhai(独孤野猪)回复于 2004-12-01 18:09:45 得分 0

不是我做的,我没有.h文件,只有一个java类,而这个类已经可以调用dll了,但是这个类没有packageTop

6 楼justinzhai(独孤野猪)回复于 2004-12-01 18:11:55 得分 0

最关键的问题就在于我没有.h文件,而这个dll是别人已经用jni做的,所以我没有.h文件的情况下没法用jni重做一个dllTop

7 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2004-12-01 18:20:41 得分 0

c:\\windows\\system32\\xxx.dll这样试试吧  
  是报找不到这个资源的异常吗?  
   
  对了,你的classpath里面有没有.啊?  
  如果有的话,在你的工作目录下面用相对路径就行了啊Top

8 楼justinzhai(独孤野猪)回复于 2004-12-01 18:28:24 得分 0

你说的都不是关键,怎么调用一个dll和重新用jni制作一个dll我都会,而现在有一个java类已经能调用dll了,也就是说我的library已经没有问题了,可是这个java类没有package,所以别的java类没法调用这个java;然后我没有.h文件,所以我没法重新用jni做一个dll;Top

9 楼taolei(实在无聊)回复于 2004-12-01 19:55:17 得分 0

没有package,别的类就调用不了?我还没听说过。  
   
  你那个class里一定是有native方法,它和那个dll是对应的,不能修改package.  
  如果一定要修改package的话,你要重写那个dll。  
  或者你对windows编程还可以的话,在写个dll来调用原来的dll.  
  在或者找个工具,把那个dll里面的export函数名字改成带package的。  
  Top

10 楼justinzhai(独孤野猪)回复于 2004-12-12 22:56:22 得分 0

已经解决了,重写dll是不可能了,因为没有.h文件,根本不知道这个dll里面有些什么方法;也不知道该怎么调用;  
  最后用的是反射技术;  
   
  package   com;  
   
  import   java.lang.reflect.Method;  
   
   
  public   class   UseTop   {  
          public   static   void   main(String[]   args)   throws   Exception   {  
                  Class   cls   =   Class.forName("Top");  
                  Method   method   =   cls.getMethod("log",   null);  
                  Object   o   =   cls.newInstance();  
                  method.invoke(o,   null);  
          }  
  }  
  Top

11 楼justinzhai(独孤野猪)回复于 2005-01-26 09:16:18 得分 0

可以调用,把.h重新编译生成Top

12 楼hzzhb(远洋)回复于 2005-01-26 09:22:41 得分 100

你的路径不对吧,用绝对路径试试Top

相关问题

  • java 如何调用 DLL
  • java调用DLL的问题
  • java调用VB.NET写的DLL
  • VC中调用VB生成的DLL(java调用VB的DLL)
  • 用Java能不能调用*.DLL?
  • 在java里如何调用DLL
  • 请问在java里怎么调用dll?
  • java中如何调用windows的dll?
  • java能否调用dll或ocx
  • java中如何调用c写的dll?

关键词

  • dll
  • 文件
  • 调用
  • jni
  • package
  • h文件
  • 类
  • 绝对路径
  • 没法
  • 没有

得分解答快速导航

  • 帖主:justinzhai
  • hzzhb

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo