请问如何开发bean组件?(200分)

  • 主题发起人 bluepeach
  • 开始时间
突然好象明白一点了。可以将我以前的程序改为不出现红字了。谢谢jjams_king的提醒。
但是还是不能象我在vj中一样,一输入Bank.然后自动提示后面的东西。好像还有不对。
慢慢再试吧。接着说刚才的你的例子。
4.当输入完server.java后,运行。会有如下警告和错误。
警告:Warning:check sourcepath;source e:/jbuilder3/myprojects/corba/easy/IMyObjectPOA.java cannot
be found on sourcepath by appending /IMyObjectPOA.java to each sourcepath entry.
类似其余六个生成的文件都有。还有一个错误:
Error:(3)class IMyObjectPOA not found in class corba.easy.MyObjectImpl.
怎么回事?不太明白。这时的运行是不是已经在调用vbj了?如果是的话,我没有设定开始那堆参数,
那肯定是会出错的了。我明天再试试。你能不能给我讲讲这里它运行的大概流程?
要关门了,有问题明天再问。
方便的话,帮我看看那个异常的问题:http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=376096
 
Sorry!,那两句注释掉就行。那是后来加上的,本来想加
#pragma prefix “JC.RnD.Soft.TestBed.UsingCORBA1”
不过路径没办法加,所以就干脆都改成注释了。可是一不小心就用成#了。
-package ...语句用来指定生成的文件的package。看看下面的结果你就会明白的:
1。用-package ...生成的文件IMyObject.java
========================================================================
package JC.RnD.Soft.TestBed.UsingCORBA1;
/**
* <ul>
* <li> <b>IDL Source</b> "IMyObject.idl"
* <li> <b>IDL Name</b> ::IMyObject
* <li> <b>Repository Id</b> IDL:IMyObject:1.0
* </ul>
* <b>IDL definition:</b>
* <pre>
* interface IMyObject {
...
};
* </pre>
*/
public interface IMyObject extends com.inprise.vbroker.CORBA.Object, JC.RnD.Soft.TestBed.UsingCORBA1.IMyObjectOperations, org.omg.CORBA.portable.IDLEntity {
}
========================================================================
2。不是用-package时生成的文件IMyObject.java
========================================================================
/**
* <ul>
* <li> <b>IDL Source</b> "IMyObject.idl"
* <li> <b>IDL Name</b> ::IMyObject
* <li> <b>Repository Id</b> IDL:IMyObject:1.0
* </ul>
* <b>IDL definition:</b>
* <pre>
* interface IMyObject {
...
};
* </pre>
*/
public interface IMyObject extends com.inprise.vbroker.CORBA.Object, IMyObjectOperations, org.omg.CORBA.portable.IDLEntity {
}
========================================================================
注意,第一个文件前面多了个package的声明。
至于那些参数,如果不想在JBuilder的IDE中运行的话就不必加。但启动程序时要用
vbj而不是java。vbj的工作就是从注册表中读如这些参数,然后调用java。那些参数
的目的是让org.omg.CORBA.ORB能够找到它的实现。在这里是
com.inprise.vbroker.orb.ORB
 
〉警告:Warning:check sourcepath;source e:/jbuilder3/myprojects/corba/easy/IMyObjectPOA.java cannot
〉 be found on sourcepath by appending /IMyObjectPOA.java to each sourcepath entry
问题就是我上面提到的。因为你没有指定package,所以你生成的IMyObjectPOA是在
缺省的package中的。而你的〈Source〉则是在e:/jbuilder3/myprojects下,所以
JBuilder将尝试在〈source〉下面找IMyObjectPOA.java文件,所以就出现这个错了。
相应的另一个错误就是找不到corba.easy.IMyObjectPOA了。
值得注意的是,JBuilder是pure java的东西,所以它的检查要比vj严格的多。vj可能
认为在目录〈Source〉/corba/easy/下有IMyObjectPOA.java,它理所当然就应该是
corba.esay.IMyObjectPOA了。但是事实上却不见得就是如此,你就是碰见这种问题。
 
哦,忘了说。JBuilder4需要另外安装VisiBroker,然后在
Tools --> Enterprise Setup...
中配一下才能使用CORBA。当然别的CORBA产品也行。
 
异常的问题解决了,我的心情好多了。我请你喝酒:^o^咱们继续努力。
我昨天偶尔在IMyObject.java文件开头加上了package corba.easy;但是又出现了其他的错误
,我后来在每一个生成的文件都加上了,但还有错。没想到我其实走了正确的一步。
但是我却没有仔细分析带package和不带package生成的文件有什么不同。你真厉害。佩服佩服。
好了,现在我运行server,出错。corba.easy.server not found in OutPath,ClassPath, or SourcePath
那是没有加参数了,于是我在define symbols中加入以下参数:(将你的稍加改编)
-Dorg.omg.CORBA.ORBClass=com.inprise.vbroker.orb.ORB
-Dorg.omg.CORBA.ORBSingletonClass=com.inprise.vbroker.orb.ORB
-Dvbroker.agent.port=14000
-Djavax.rmi.PortableRemoteObjectClass=com.inprise.vbroker.rmi.PortableRemoteObjectImpl
-Djavax.rmi.CORBA.UtilClass=com.inprise.vbroker.rmi.CORBA.UtilImpl
-Dvbroker.orb.admDir=e:/vbroker/adm
-Denv.class.path=.;e:/vbroker/lib/vbjorb.jar
-Dvbroker.orb.procId=280
这其中倒数第二行它会自动分成两行,不知道是否有影响。这时运行,还是一样的报错。
但是在我的e:/jbuilder3/myprojects/corba/easy下面已经有了server.class及其他的class了。
不知道怎么回事?还有什么不对的地方么?
 
我有时候想不明白:你为什么不把idl编译后的文件另建一个目录?如果你在idl中加入module ss的话,
他就自动生成在当前目录下建立一个ss的目录,这样看起来干净的多。但是为了让生成的文件的第一句package如
你所愿吗?但是我们好像还是可以自己编译的时候指定package啊。我那个还没有试出来,我是想当然耳,错了不要见怪。
jbuilder运行的时候它自动先编译了java文件,在output路径下生成class文件。
对于corba文件,它是怎样编译的?它怎么知道应该这样编译?
这时我如果不在ide下运行,那我怎么自行生成class文件?我没有查到vbjc的参数。
vbjc是去调用的javac吗?vbj是调用的java吗?这其中的一些关系我不是很透彻的了解。
我发现这些天我的问题无穷多,前几天我用vj+visibroker,一切顺利。也许是我刚用jbuilder吧。
怎么都搞不明白jbuilder中的好多问题,我想一旦跨过这个门槛,可能一切就会好多了。谢谢大家的帮助!
 
使用-package...开关的原因是这样做方便。下面两种方法是等价的:
==============================================================================
1。使用-package
--------------------------------IMyObject.IDL---------------------------------
//root_dir ../../../../../
//package JC.RnD.Soft.TestBed.UsingCORBA1
interface IMyObject
{
string getVersion();
};
------------------------------------------------------------------------------
--------------------------------MakeSnS.bat-----------------------------------
REM Keep this batch file in this exact dir.
idl2java -package JC.RnD.Soft.TestBed.UsingCORBA1 -root_dir ../../../../../ IMyObject.idl
------------------------------------------------------------------------------
2。不是用-package...
--------------------------------IMyObject.IDL---------------------------------
//root_dir ../../../../../
//package JC.RnD.Soft.TestBed.UsingCORBA1
module JC{
module RnD{
module Soft{
module TestBed{
module UsingCORBA1{
interface IMyObject
{
string getVersion();
};
};//module UsingCORBA1
};//module TestBed
};//module Soft
};//module RnD
};//module JC
------------------------------------------------------------------------------
--------------------------------MakeSnS.bat-----------------------------------
REM Keep this batch file in this exact dir.
REM No package directive needed
idl2java -root_dir ../../../../../ IMyObject.idl
------------------------------------------------------------------------------
 
〉好了,现在我运行server,出错。corba.easy.server not found in OutPath,
〉ClassPath, or SourcePath
1。检查〈Output〉/corba/easy下面有没有server.class文件。
2。检查〈Source〉/corba/easy下面有没有server.java文件。
3。检查server.java文件有没有正确声明package。(很可能就是这错误了)
至于那些参数,当你运行的时候报告无法找到ORB或ORB初始化错等系统错误的时候
才去考虑。
 
vbjc的参数跟vbj的差不多。vbjc调用javac,vbj调用java。
(什么,不信??试一下输入vbjc回车,呵呵看看谁在报错)
〉对于corba文件,它是怎样编译的?它怎么知道应该这样编译?
什么意思???先分析出Dependency然后调用javac一个一个编译
 
我也是从报错信息猜到的,我只是想知道它是怎么调用的罢了。
jb4果然很好用,我很容易的就编译通过了。只是在ide界面调试的时候他会出现
global tomcat3.1 setup对话框,这个好像是调试jsp的吧。怎么会出来的?
但是我编译生成的class文件可以用vbj来执行。
好了,jb3我也可以正确编译了,只是也是不能调试。同样我也可以用vbj来执行。你的例子也没问题。
<font color="red">师者,传道,授业,解惑也。兄弟,什么时候来华东地区,我一定给你接风。</font>
 
运行好像要在
project --> properties --> run
中设置一下才行。
 
哈,好了,果然很爽。我好高兴啊。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
742
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部