2

openoffice3.1.1とpython2.5で実行されているpyunoのサンプルとその他のサンプルコードを取得しようとしていますが、運がありません。

残念ながら、pyunoは何がうまくいかないかについての手がかりを与えません。

[1]の場合:unoをインポートします
[2]の場合:local = uno.getComponentContext()
[3]の場合:resolver = local.ServiceManager.createInstanceWithContext( "com.sun.star.bridge.UnoUrlResolver"、local)
-------------------------------------------------- -------------------------
com.sun.star.uno.RuntimeExceptionトレースバック(最後の最後の呼び出し)

/opt/openoffice.org/basis3.1/program/ in()

com.sun.star.uno.RuntimeException ::'tuple'オブジェクトには属性'getTypes'がなく、トレースバックが続きます
利用可能なトレースバックはありません

以下は、基本的にヘッドレスオフィスインスタンスを起動し、関連するコンテキストオブジェクトを返す/opt/openoffice.org/basis3.1/program/officehelper.pyの実行の出力です。

den @ ev:/opt/openoffice.org/basis3.1/program> python officehelper.py
トレースバック(最後の最後の呼び出し):
  ファイル"officehelper.py"、42行目
    com.sun.star.connectionからインポートNoConnectException
  _uno_importのファイル"uno.py"、行273
    RuntimeException = pyuno.getClass( "com.sun.star.uno.RuntimeException")
RuntimeError:pyuno.getClass:1つの文字列引数が必要です

pyunoは引数を1つだけ取り、http://udk.openoffice.org/source/browse/udk/pyuno/source/module/pyuno_module.cxx?rev = 1.14&view = markupで定義されているように、文字列である必要があります 。とにかくpyuno.getClassを動作させることができます。

pyunoを機能させる方法について何か提案はありますか?

4

1 に答える 1

5

In [1]:import uno In [2]:local = uno.getComponentContext()In [3]:resolver = local.ServiceManager.createInstanceWithContext( "com.sun.star.bridge.UnoUrlResolver"、local)

OOPがうまくいかなかった、私見。私はそのOTを知っていますが、以前にunoを動作させようとして、あきらめました。これは純粋なSteveYegge散文です(http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.htmlで読んでください)。

これらの行をより読みやすい形式に翻訳すると、大まかに次のようになります。

「'local'を'uno'のメソッド'getcomponentcontext'を呼び出した結果とします。'servicemanager'を'local'の属性'servicemanager'とします。'resolver'を'呼び出しの結果とします。サービスマネージャのメソッド「コンテキスト付きのインスタンスを作成」、引数「com sun star bridgeunourlresolver」および「local」を使用します。

ああ、神様。非常にひどく過度に具体的で、複雑で、自己認識的ではないが自己参照的であるプログラムに何か問題があるのは当然です...あなたは「ローカル」のサブメソッドを呼び出し、そのサブメソッドを伝える必要があります「ローカル」とはどういう意味ですか?何だって?これを切り抜けることができる大胆不敵な開発者に敬意を表します。幸せなデバッグ。

追加した:

コメントとポイントのためのthx。

ピューノの問題私は実際には何もできませんが、明確な期限を設けて患者のトライトリトライアプローチを説得することをお勧めします。

また、ナンセンスなエラーメッセージがあるため、pyunoの人々に完全なBUGを提出することをお勧めします(実際にアクティブな場合、これはかなり静かなプロジェクトであるという印象を受けました)。問題のメソッドは1つの文字列引数を要求しているようです。そしてそれはそれを手に入れます、そしてそれはそれがしたと不平を言います。これは、コードの障害を宣言することが合理的になる程度にはあまり役に立ちません。

このような状況では、私はよく情報源を調べます。でもあなたはすでにそれをしましたね

私は人々が「なぜあなたはこれをしたいのですか?」私が助けを求めるとき。ただし、誰か(おそらくあなた)がプロセスで別の実行可能なパスを思い付くことがあります。これには特定の問題の解決策は含まれていませんが、上位の問題の解決には役立ちます。だから、私が尋ねるなら:全体像は何ですか?

于 2009-10-24T21:53:20.303 に答える