无法定位对象方法" simple_request"通过包" RPC :: XML :: Client :: new:无法获取RPC :: XML :: Parser对象"

时间:2014-05-13 18:39:20

标签: perl oop xml-rpc perl-module confluence

这里似乎有十几个与遗漏方法和OO Perl相关的问题,但从我所看到的,很多问题都与自制的Perl模块有关。然而,我的问题涉及CPAN模块中显然缺失的方法。我正在尝试使用Confluence::Client::XMLRPC模块创建一个脚本,无论何时调用它都会将文本上传到我们的Confluence Wiki页面。

我在私人服务器上编程,无法直接访问CPAN。我必须手动下载所有必需的软件包作为来自另一个盒子的tarball并将它们FTP。然后我使用make以正确的顺序安装它们,注意依赖性。

此外,公司策略是在我们的主目录中的自定义/lib文件夹中安装所有其他Perl模块,并且我们不允许更改系统的Perl lib(尽管我们仍然可以使用默认包)。我也没有root权限。

现在我只是试图用这个简单的代码(pulled mostly from the Confluence module CPAN page)来测试XML-RPC服务器的功能:

#!/usr/bin/env perl

use strict;
use warnings;
use RPC::XML::Parser;
use Confluence::Client::XMLRPC;

my $username = 'username';
my $password = 'password';
my $proxyurl = '.../confluence/rpc/xmlrpc';

my $wiki = Confluence::Client::XMLRPC->new($username, $password, $proxyurl);

我应该注意这里我不使用use lib因为我的自定义lib目录已经包含在$PERL5LIB中了(也许这是错误的来源 - 方法被覆盖了?)

代码吐出以下错误:

Can't locate object method "simple_request" via package "RPC::XML::Client::new: Unable to get RPC::XML::Parser object" (perhaps you forgot to load "RPC::XML::Client::new: Unable to get RPC::XML::Parser object"?) at /home/myID/lib/share/perl5/Confluence/Client/XMLRPC.pm line 141.

我怀疑这是一个编码错误,如果它是一个自定义模块,但它是一个标准的CPAN模块,制作,测试和安装完全正常。我已经验证包RPC / XML / Parser.pm肯定存在。我试图打印@INC位置以验证我使用的是正确的模块:

print($INC{"Confluence/Client/XMLRPC.pm"}, "\n");
print($INC{"RPC/XML/Client.pm"}, "\n");
print($INC{"RPC/XML/Parser.pm"}, "\n");

打印出来:

/home/myID/lib/share/perl5/Confluence/Client/XMLRPC.pm
/home/myID/lib/share/perl5/RPC/XML/Client.pm
/home/myID/lib/share/perl5/RPC/XML/Parser.pm

看起来和我预期的差不多。自从试图找出错误之后,一直在撕扯我的头发,但还没有取得更多进展。任何建议和/或建议将不胜感激!

其他信息:

  • perl:revision 5 version 10 subversion 1
  • 字段:2.14
  • %ENV:PERL5LIB="/home/myID/lib/share/perl5"
  • @INC:
    • /家庭/本身份识别码/ LIB /共享/的perl5
    • 的/ usr /本地/ lib64下/的perl5
    • 的/ usr /本地/共享/的perl5
    • 的/ usr / lib64下/的perl5 / vendor_perl
    • 的/ usr /共享/的perl5 / vendor_perl
    • 的/ usr / lib64下/的perl5
    • 的/ usr /共享/的perl5

1 个答案:

答案 0 :(得分:0)

看起来我忽略了源代码附带的一些非常方便的例子。在upload_files.pl中对Confluence-Client-XMLRPC-2.5/examples进行五秒钟查看表明我在use lib qw(../lib);之前只丢失了一行代码use Confluence::Client::XMLRPC;。在那之后,一切都像发条一样工作。

可悲的是,我不知道use lib qw(../lib);现在做了什么,所以我认为这里的教训是要了解更多有关OO Perl和Perl库的信息。如果我在第一时间停下来阅读CPAN页面,我可能已经节省了大量的时间。