构件开发常见问题和错误的解决方案和处理方法
問題及解決方案:
?1. 構(gòu)件開發(fā)完成后,啟動(dòng)后如何對構(gòu)件框架結(jié)構(gòu)進(jìn)行查看?
?問題原因:為便于構(gòu)件開發(fā)者對構(gòu)件的整體進(jìn)行把握,需要看到構(gòu)件的框架結(jié)構(gòu)。
解決方案:在當(dāng)前構(gòu)件開發(fā)的包中,新建一個(gè)HelloWord類,包含main函數(shù),并在函數(shù)中對構(gòu)件進(jìn)行啟動(dòng)。示例代碼如下所示:
啟動(dòng)SmcavsExplorer的代碼 ????Factory?factory?=?FactoryFactory????????????.getFactory(FactoryFactory.SMCAVS_BACKEND);
????HashMap?context?=?new?HashMap();
????context.put("name",?"Connection");
????context.put("definition",?"ustb.compbase.db.connection.Connection");
????Component?root?=?(Component)?factory.newComponent(
????????????"ustb.smcavs.explorer.BasicSmcavsExplorer",?context);
????Smcavs.getLifeCycleController(root).startFc();
錯(cuò)誤及處理方法:
1. 無效綁定:不對應(yīng)的簽名。異常內(nèi)容是:
Exception in thread "main" ustb.smcavs.adl.ADLException: Invalid binding: incompatible signatures (ustb/compbase/db/connection/Connection.smcavs:11)
?at ustb.smcavs.adl.bindings.TypeBindingLoader.checkBinding(TypeBindingLoader.java:119)
?at ustb.smcavs.adl.bindings.BindingLoader.checkBinding(BindingLoader.java:122)
?at ustb.smcavs.adl.bindings.BindingLoader.checkNode(BindingLoader.java:82)
?at ustb.smcavs.adl.bindings.BindingLoader.checkNode(BindingLoader.java:96)
?at ustb.smcavs.adl.bindings.BindingLoader.load(BindingLoader.java:54)
?at ustb.smcavs.adl.bindings.UnboundInterfaceDetectorLoader.load(UnboundInterfaceDetectorLoader.java:58)
?at ustb.smcavs.adl.BasicFactory.newComponent(BasicFactory.java:144)
?at ustb.compbase.db.connection.HelloWorld.main(HelloWorld.java:35)
問題原因:綁定關(guān)系無效。
解決方案:檢查構(gòu)件描述文件中的各個(gè)節(jié)點(diǎn)的definition,signature等相關(guān)信息及綁定關(guān)系項(xiàng)是否書寫正確。
2. 實(shí)例化異常:未定義smcavs.provider的值。內(nèi)容是:
ustb.smcavs.task.core.TaskExecutionException: An error occurs while executing task :"T2476072[CreateTypeTask()]"
?at ustb.smcavs.task.core.BasicScheduler.doSchedule(BasicScheduler.java:112)
?at ustb.smcavs.task.core.BasicScheduler.schedule(BasicScheduler.java:47)
?at ustb.smcavs.adl.BasicFactory.newComponent(BasicFactory.java:161)
?at ustb.compbase.db.connection.HelloWorld.main(HelloWorld.java:35)
Caused by: ustb.smcavs.api.factory.InstantiationException: The smcavs.provider value is not defined
?at ustb.smcavs.util.Smcavs.getBootstrapComponent(Smcavs.java:93)
?at ustb.smcavs.adl.types.SmcavsTypeBuilder.createInterfaceType(SmcavsTypeBuilder.java:68)
?at ustb.smcavs.adl.types.TypeCompiler$CreateTypeTask.execute(TypeCompiler.java:138)
?at ustb.smcavs.task.core.BasicScheduler.doSchedule(BasicScheduler.java:110)
?... 3 more
Exception in thread "main" ustb.smcavs.adl.ADLException: Unable to execute some of the tasks
?at ustb.smcavs.adl.BasicFactory.newComponent(BasicFactory.java:164)
?at ustb.compbase.db.connection.HelloWorld.main(HelloWorld.java:35)
Caused by: ustb.smcavs.task.core.TaskExecutionException: An error occurs while executing task :"T2476072[CreateTypeTask()]"
?at ustb.smcavs.task.core.BasicScheduler.doSchedule(BasicScheduler.java:112)
?at ustb.smcavs.task.core.BasicScheduler.schedule(BasicScheduler.java:47)
?at ustb.smcavs.adl.BasicFactory.newComponent(BasicFactory.java:161)
?... 1 more
Caused by: ustb.smcavs.api.factory.InstantiationException: The smcavs.provider value is not defined
?at ustb.smcavs.util.Smcavs.getBootstrapComponent(Smcavs.java:93)
?at ustb.smcavs.adl.types.SmcavsTypeBuilder.createInterfaceType(SmcavsTypeBuilder.java:68)
?at ustb.smcavs.adl.types.TypeCompiler$CreateTypeTask.execute(TypeCompiler.java:138)
?at ustb.smcavs.task.core.BasicScheduler.doSchedule(BasicScheduler.java:110)
?... 3 more
問題原因:未定義java虛擬機(jī)的smcavs運(yùn)行環(huán)境變量。
解決方案:在run configuration中的 arguments標(biāo)簽中的vm auguments文本框內(nèi)輸入:
-Dsmcavs.provider=ustb.smcavs.julia.Julia
點(diǎn)擊run,即可。
3. 構(gòu)件的實(shí)現(xiàn)需要實(shí)現(xiàn)BindingController 接口,因?yàn)闃?gòu)件類型包含客戶端接口。
Exception in thread "main" ustb.smcavs.adl.ADLException: Unable to execute some of the tasks
?at ustb.smcavs.adl.BasicFactory.newComponent(BasicFactory.java:164)
?at ustb.compbase.db.operation.HelloWorld.main(HelloWorld.java:35)
Caused by: ustb.smcavs.task.core.TaskExecutionException: An error occurs while executing task :"T6510044[CreateTask(SelectOperation,primitive,ustb.compbase.db.operation.SelectOperation)]"
?at ustb.smcavs.task.core.BasicScheduler.doSchedule(BasicScheduler.java:112)
?at ustb.smcavs.task.core.BasicScheduler.schedule(BasicScheduler.java:47)
?at ustb.smcavs.adl.BasicFactory.newComponent(BasicFactory.java:161)
?... 1 more
Caused by: InstantiationException: The component implementation class 'ustb.compbase.db.operation.SelectOperation' must implement the BindingController interface, since the component type contains client interfaces
?at ustb.smcavs.julia.generated.C974eb5d4_0.checkFcContentClass(C974eb5d4_0.java:239)
?at ustb.smcavs.julia.generated.C974eb5d4_0.newFcInstance(C974eb5d4_0.java:67)
?at ustb.smcavs.julia.generated.C3bdbaf28_0.newFcInstance(C3bdbaf28_0.java:45)
?at ustb.smcavs.adl.implementations.SmcavsImplementationBuilder.createComponent(SmcavsImplementationBuilder.java:74)
?at ustb.smcavs.adl.implementations.ImplementationCompiler$CreateTask.execute(ImplementationCompiler.java:245)
?at ustb.smcavs.task.core.BasicScheduler.doSchedule(BasicScheduler.java:110)
?... 3 more
問題原因:構(gòu)件調(diào)用了客戶端接口,但沒有實(shí)現(xiàn)BindingController接口
解決方案:在構(gòu)件實(shí)現(xiàn)代碼中implements BindingController接口并實(shí)現(xiàn)其相應(yīng)的方法。
4. 構(gòu)件Explorer視圖中接口和構(gòu)件的連接線錯(cuò)位,致使看不清楚構(gòu)件與接口的連接情況。
問題原因:視圖中接口的排列順序?yàn)樽值漤樞?#xff0c;而構(gòu)件的順序是按照描述文件中的順序。
解決方案:因?yàn)樽值漤樞驗(yàn)橄到y(tǒng)平臺確定下來的,可以在構(gòu)件描述文件中修改構(gòu)件的順序,使之與接口的連接順序一致即可。
轉(zhuǎn)載于:https://www.cnblogs.com/destimarve/archive/2010/12/08/component_problems.html
總結(jié)
以上是生活随笔為你收集整理的构件开发常见问题和错误的解决方案和处理方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css框架之960 Grid Syste
- 下一篇: WCF 第五章 行为 以属性为服务操作行