首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星号-Java无法加载属性文件

星号-Java无法加载属性文件
EN

Stack Overflow用户
提问于 2020-07-01 00:14:01
回答 1查看 342关注 0票数 0

我正在开发一个非常简单的星号--基于Java的程序,它向调用者表示问候,从web服务中检索一些信息,将检索到的数据读入调用者,最后挂断。

我遵循的步骤:

在extensions_custom.conf上输入了以下行:

exten => 1000,n,Agi(agi://192.168.0.8/ivryobi.agi)

在C中创建了以下文件结构:\Project\target\classes\

代码语言:javascript
复制
Runnable.java
IvrYobi.java
Runnable.class
IvrYobi.class
fastagi-mapping.properties

在快速贴图中,我有:

ivryobi.agi = main.IvrYobi

IvrYoby的内容如下:

代码语言:javascript
复制
public class IvrYobi extends BaseAgiScript {

    public void service(AgiRequest request, AgiChannel channel) throws AgiException {
    String callerMsisdn = request.getCallerIdNumber();
}

正常工作时,

在控制台中运行以下命令

asterisk-java.jar;commons-lang3-3.10.jar;commons-logging-1.2.jar;httpclient-4.5.12.jar;httpcore-4.4.13.jar;mysql-connector-java-8.0.20.jar;.

C:\Project\target\classes>java -cp -cporg.asteriskjava.fastagi.DefaultAgiServer

正如您在下面的控制台输出中所看到的,工作非常完美

6月30日,2020年6:09:04下午6:09:04 org.asteriskjava.fastagi.DefaultAgiServer启动INFORMACI N:侦听*:4573。2020年6月30日下午6:09:09 PM org.asteriskjava.fastagi.AbstractAgiServer getPool INFORMACI N:线程池启动。2020年6月30日下午6:09:09 PM org.asteriskjava.fastagi.ResourceBundleMappingStrategy loadResourceBundle INFORMACI N:向IvrYobi类添加“ivryobi.agi”映射。

当问题出现时出现

当我运行完全相同的代码,但在控制台中运行时,我使用Runnable.java

以下是Runnable.java的内容:

代码语言:javascript
复制
DefaultAgiServer server = new DefaultAgiServer();

    public MyRunnable() {

        ClassNameMappingStrategy strategy = new ClassNameMappingStrategy(false);

        server.setMappingStrategy(strategy);

    }

    public void run() {

        try {

            server.startup();

        } catch (IllegalStateException | IOException e) {

            e.printStackTrace();

            server.shutdown();

        }

    }

    public void stop() {
        server.shutdown();
    }

我们可以在Eclipse的控制台上观察到以下错误:

org.asteriskjava.fastagi.internal.DefaultAgiChannelFactory 0主调试org.asteriskjava.fastagi.DefaultAgiServer -使用channelFactory channelFactory 9主信息org.asteriskjava.fastagi.DefaultAgiServer -侦听*:4573。4806主调试org.asteriskjava.fastagi.DefaultAgiServer -从/192.168.0.254 4810接收到的连接org.asteriskjava.fastagi.DefaultAgiServer -线程池启动.4849 available 1.1调试org.asteriskjava.fastagi.ClassNameMappingStrategy -无法创建ivryobi.agi类型的AgiScript实例:未找到类,确保类存在并且在CLASSPATH 4849 available 1.1错误org.asteriskjava.fastagi.internal.FastAgiConnectionHandler上可用-没有为URL‘agi://192.168.0.8/ivryobi.agi(脚本'ivryobi.agi')配置的脚本

试图对进行故障排除

CLASSPATH.

  • Tried Path

  • Compiled中的
  • 已经确保了packages mapping.properties的不同名称,而case
  • 在java执行Path
  • Compiled上复制了.properties文件,该项目作为一个可执行的jar
  • 在eclipse中添加/删除了包(ex: com.test.IvrYobi),并对.properties文件进行了更改。
  • 检查了星号-java-3.5.0.jar中的代码,看起来就像在没有找到配置文件的情况下,它只是在没有引发任何警告的情况下继续进行。由于已打包在jar中,所以我无法修改该代码。

拜托,你还有什么其他的想法我可以试试吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-16 19:53:49

终于自己找到了解决办法

我不得不使用项目的源代码重新编译asterisk-java.jar

在DefaultAgiServer.java上更改行:

代码语言:javascript
复制
resourceBundle = ResourceBundle.getBundle(configResourceBundleName);

通过以下方式:

代码语言:javascript
复制
    FileInputStream fis = new FileInputStream("myivr.properties");
    resourceBundle = new PropertyResourceBundle(fis);
     
    logger.info("resourceBundle cargado ok!");

在捕获时,替换

代码语言:javascript
复制
return;

具有更好的响应,因此您将知道资源是否无法加载。

代码语言:javascript
复制
logger.info("resourceBundle cargado ok!");                 
            
        }
        catch (MissingResourceException | IOException e)
        {
            logger.error("No existe el recurso invocado: " + e.getMessage());
            return;
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62667876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档