Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android应用程序中导入Java项目?_Java_Android_Xml - Fatal编程技术网

在Android应用程序中导入Java项目?

在Android应用程序中导入Java项目?,java,android,xml,Java,Android,Xml,即使Java项目中的某些类在正常的Android项目中无法识别,我是否可以在Android项目中使用Java项目?例如javax.xml包 在我看来,有两种可能性: 或者使用该java项目创建一个jar,并将其导入android 或者参考android中的项目(据我所知,这是可能的) 但无论如何,在我的android应用程序中,那些在java中找到但在android中找不到的类可以吗?这样行吗?非常感谢。 我制作了JavaProject,然后将它作为参考导入到我的Android项目中。我得到

即使Java项目中的某些类在正常的Android项目中无法识别,我是否可以在Android项目中使用Java项目?例如javax.xml包

在我看来,有两种可能性:

  • 或者使用该java项目创建一个jar,并将其导入android
  • 或者参考android中的项目(据我所知,这是可能的) 但无论如何,在我的android应用程序中,那些在java中找到但在android中找不到的类可以吗?这样行吗?非常感谢。

    我制作了JavaProject,然后将它作为参考导入到我的Android项目中。我得到了一个我没有预料到的错误,它无法识别我Java项目中的.class。

    如果您使用Eclipse(带有ADT插件),您可以在Android项目的构建路径中引用Java项目。这将在.apk输出中打包这些类,并允许您在应用程序中使用它们

    正如你在评论中指出的那样;将Java项目引用为Android库在您的情况下不起作用,因为javax.*包的存在将导致Eclipse中的编译时错误。在这种情况下,您需要选择选项1,并从Java项目中构建一个Jar文件,并将其包括在内。这样,需要javax.*的类文件就不会产生任何编译/运行时错误,除非您尝试使用它们。无论哪种方式,使用Java构建路径都不会像您期望的那样工作——类文件不是以这种方式绑定的


    Android平台提供了,但不是整个软件包(阅读了解更多细节)。通常,最简单的解决方案是编写一个与受影响Java代码相当的Android版本,它不需要缺少依赖项和两个实现,因此每个项目都使用正确的实现。

    最终成功了,我最大的问题是我传递给HttpPost的url,而带有SAP的ksoap2根本不适用于我

    private void testCallingService() {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        httpclient.getCredentialsProvider().setCredentials(
                new AuthScope("ip here", port here),
                new UsernamePasswordCredentials(username, password));
    
        try {
            String buffer = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:urn='namespace'><soapenv:Header/><soapenv:Body><urn:methodname><USERNAME>test</USERNAME></urn:methodname></soapenv:Body></soapenv:Envelope>";
            HttpPost httppost = new HttpPost(url);
    
            StringEntity se = new StringEntity(buffer, HTTP.UTF_8);
            se.setContentType("text/xml");
            httppost.setHeader("Content-Type",
                    "application/soap+xml;charset=UTF-8");
            httppost.setEntity(se);
    
            CredentialsProvider credsProvider = new BasicCredentialsProvider();
            credsProvider.setCredentials(new AuthScope("ip", port),
                    new UsernamePasswordCredentials(username, password));
            httpclient.setCredentialsProvider(credsProvider);
    
            BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient
                    .execute(httppost);
            if (httpResponse.getStatusLine() != null) {
                System.out.println("Http status: "
                        + httpResponse.getStatusLine());
            }
    
            RequestLine requestLine = httppost.getRequestLine();
    
            String response = getResponseBody(httpResponse); // read server response. response.getEntity().getContent();...
            System.out.println("response: " + response);
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
        httpclient.getConnectionManager().shutdown();
    }
    
    private void testCallingService(){
    DefaultHttpClient httpclient=新的DefaultHttpClient();
    httpclient.getCredentialsProvider().setCredentials(
    新的AuthScope(“此处为ip”,此处为端口),
    新用户名密码凭据(用户名、密码));
    试一试{
    字符串缓冲区=“测试”;
    HttpPost HttpPost=新的HttpPost(url);
    StringEntity se=新的StringEntity(缓冲区,HTTP.UTF_8);
    setContentType(“text/xml”);
    setHeader(“内容类型”,
    “应用程序/soap+xml;字符集=UTF-8”);
    httppost.setEntity(se);
    CredentialsProvider credsProvider=新的BasicCredentialsProvider();
    credsProvider.setCredentials(新的AuthScope(“ip”),端口),
    新用户名密码凭据(用户名、密码));
    httpclient.setCredentialsProvider(CredProvider);
    BasicHttpResponse httpResponse=(BasicHttpResponse)httpclient
    .执行(httppost);
    if(httpResponse.getStatusLine()!=null){
    System.out.println(“Http状态:”
    +httpResponse.getStatusLine());
    }
    RequestLine RequestLine=httppost.getRequestLine();
    字符串response=getResponseBody(httpResponse);//读取服务器响应.response.getEntity().getContent();。。。
    System.out.println(“响应:+response”);
    }捕获(IOE异常){
    //TODO自动生成的捕捉块
    }
    httpclient.getConnectionManager().shutdown();
    }
    
    因此,我构建了自己的SOAP信封,将在最近的将来尝试停止这样做。创建CredentialsProvider实例并设置我的用户/通行证详细信息。服务器的状态是200,我收到了我需要的信息。一个问题是,响应显然太大(并且不会到此为止),因此我的响应被截断。现在正在努力解决这个问题。
    我真的希望这能帮助别人

    除非它们与android发生冲突,否则它应该可以工作。。但是它说有些东西android不喜欢。这就是我好奇的,通常它会与android冲突,因为javax.xml包不在android的默认包中,导入核心库是不可编译的。我希望导入java项目不会有同样的结果,android会抱怨这些类。将java项目的java源代码复制到android源代码文件夹中,然后检查编译错误。当您发现这些错误时,请针对这些错误发布一个问题。这将节省我们的时间,因为您提到的两个选项在实际的android平台上都不起作用。请标记为android和xml