最佳答案

创建一个java内存泄漏

我在一个面试中,被要求用java创建一个内存泄漏。我觉得很傻,但是怎么让它泄露呢?


查看最佳答案

从数组创建ArrayList

我有一个初始化为:

Element[] array = {new Element(1), new Element(2), new Element(3)};

我想把它转换成ArrayList

ArrayList arraylist = ???;

查看最佳答案

如何在Java中将字符串转换为int?

如何在JAVA中将String转换为int

我的字符串只包含数字,我希望返回它表示的数字。给定字符串"1234",结果应该是1234.

查看最佳答案

grid layout中的Fling手势检测

我想让fling手势检测在我的安卓应用程序中工作。

我拥有的是一个包含9个ImageViewGridLayout。在这里可以找到源代码:Romain Guys's Grid Layout.

我所获取的文件来自RomainGuy的Photostream application,并且只稍微修改了一下。

对于简单的单击情况,我只需要将我添加的每个ImageViewonClickListener设置为实现View.OnClickListener的主activity。实现识别fling的东西似乎要复杂得多。我认为这是因为它可能跨越views

  • ,如果我的活动实现了OnGestureListener,我不知道如何将它设置为标的手势侦听器签13或我添加的Image视图。

    public class SelectFilterActivity extends Activity implements
       View.OnClickListener, OnGestureListener { ...
  • 如果我的活动实现了OnTouchListener,那么我就没有到overrideonFling方法(它有两个事件作为参数,允许我确定

    public class SelectFilterActivity extends Activity implements
        View.OnClickListener, OnTouchListener { ...

    如果我做了一个自定义的View,就像扩展ImageViewGestureImageView一样,我不知道如何从视图中知道fling已经发生了。在任何情况下,我都尝试过这样做,当我触摸屏幕时,这些方法都没有被调用。

我真的需要一个跨视图工作的具体例子。什么,何时,以及如何连接这个listener?我还需要能够检测到单次点击。

// Gesture detection
mGestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        int dx = (int) (e2.getX() - e1.getX());
        // don't accept the fling if it's too short
        // as it may conflict with a button push
        if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.absvelocityY)) {
            if (velocityX > 0) {
                moveRight();
            } else {
                moveLeft();
            }
            return true;
        } else {
            return false;
        }
    }
});

是否可以在屏幕顶部放置一个透明的视图来捕捉点击量?

如果我选择不使用XML23作为标签的子图像视图,我可以将GestureDetector作为构造函数参数传递给我创建的ImageView的一个新子类吗?

这是我非常简单的活动试图让fling检测工作:SelectFilterActivity (Adapted from photostream).

我一直在查看以下源代码:

  • fling0

  • fling1

    fling2

查看最佳答案

数据库打包进App

如果您的App需要一个数据库,并且它附带了内置的数据,那么提供该应用程序的最佳方法是什么?我应该:

  1. 预创建SQLite数据库并将其包含在.apk中吗?

  2. 在应用程序中包含sql命令,并让它创建数据库并在第一次使用时插入数据?

我看到的缺点是:

  1. 可能的SQLite版本不匹配可能会导致问题,我目前不知道数据库应该去哪里,也不知道如何访问它。

  2. 在设备上创建和填充数据库可能需要很长时间。

有什么建议吗?

查看最佳答案

如何在eclipse中生成allure的测试报告

我使用"selenide"、"testng"、"maven"、"eclipse"创建了一些自动化脚本。我试着添加allure的测试结果。为了运行Eclipse中的测试,我遵循了allure-testng-maven指令和更新的pom.xml.

,我通过右键单击pom.xml+"Run as"+"maven test"执行测试。这是在"./target/allure-results"文件夹中执行所有的TestNG测试并生成有allure的xml文件。

我的疑问是如何查看来自Eclipse.allure报告

是我的pom.xml文件。

感谢

 <!-- language: lang-xml -->

<project xmlns="http://maven.apache.org/POM/4.0.0"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>xxxxxxxxxxxxxxxxxxx</groupId>
<artifactId>xxxxxxxxxxxxxxx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>servicenow</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<allure.version>1.5.0.RC2</allure.version>
<aspectj.version>1.8.9</aspectj.version>
</properties>

<dependencies>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>


<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>2.53.1</version>
 <scope>test</scope>            
</dependency>
<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-server</artifactId>
 <version>2.53.1</version>
 <scope>test</scope>            
</dependency>
<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-remote-driver</artifactId>
 <version>2.53.1</version>
 <scope>test</scope>            
</dependency>
<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-firefox-driver</artifactId>
 <version>2.53.1</version>
 <scope>test</scope>    
</dependency>  
<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-chrome-driver</artifactId>
 <version>2.53.1</version>
 <scope>test</scope>    
</dependency>

<dependency>                
 <groupId>org.testng</groupId>                              
 <artifactId>testng</artifactId>                                
 <version>6.9.10</version>                              
 <scope>test</scope>                                        
</dependency>

<dependency>
 <groupId>com.codeborne</groupId>
 <artifactId>selenide</artifactId>
 <version>3.9.1</version>
 <scope>test</scope>
</dependency>

<dependency>
 <groupId>ru.yandex.qatools.allure</groupId>
 <artifactId>allure-testng-adaptor</artifactId>
 <version>${allure.version}</version>
 <exclusions>
    <exclusion>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
    </exclusion>
 </exclusions>
 </dependency>

 <dependency>
    <groupId>com.codeborne</groupId>
    <artifactId>phantomjsdriver</artifactId>
    <version>1.2.1</version>
</dependency>

 <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
  </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
                <argLine>
                    -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                </argLine>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjweaver</artifactId>
                    <version>${aspectj.version}</version>
                </dependency>
            </dependencies>
        </plugin>

        <!--Needed only to show reports locally. Run jetty:run and
        open localhost:8080 to show the report-->
        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.4.0.M1</version>
            <configuration>
                    <webAppSourceDirectory>${project.build.directory}/site/allure-maven-plugin</webAppSourceDirectory>
                <stopKey>stop</stopKey>
                <stopPort>1234</stopPort>
            </configuration>
        </plugin>
    </plugins>
</build>

<reporting>
    <excludeDefaults>true</excludeDefaults>
    <plugins>
        <plugin>
            <groupId>ru.yandex.qatools.allure</groupId>
            <artifactId>allure-maven-plugin</artifactId>
            <version>2.5</version>
        </plugin>
    </plugins>
</reporting>

</project>

任何帮助。谢谢!

查看最佳答案

让EditText在Activity启动时不自动获取焦点

我有一个Activity,有两个控件:

  1. EditText

  2. ListView

Activity启动时,EditText立即得到输入焦点(闪烁光标)。我不想它自动获取焦点。我试过:

EditText.setSelected(false);

没有结果。当Activity启动时,如何让EditText不自动获取焦点?

查看最佳答案

如何解决Spring Data Maven构建时报"Plugin execution not covered by lifecycle configuration"

我正在使用Spring Data and Neo4j。首先,我尝试遵循由主站点的this guide。我在"Hello, World!" example file的基础上使用了pom.xml。下面是导致问题的插件:

<plugin>
<!-- Required to resolve aspectj-enhanced class features -->
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>aspectj-maven-plugin</artifactId>
    <version>1.0</version>
    <configuration>
        <outxml>true</outxml>
        <aspectLibraries>
            <aspectLibrary>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aspects</artifactId>
            </aspectLibrary>
            <aspectLibrary>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-neo4j</artifactId>
            </aspectLibrary>
        </aspectLibraries>
        <source>1.6</source>
        <target>1.6</target>
    </configuration>
    <executions>
        <!-- ERROR HERE IN ECLIPSE SEE BELOW FOR FULL MESSAGE -->
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>test-compile</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjtools</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
    </dependencies>
</plugin>

,我看到的错误是:

 Multiple annotations found at this line:
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:compile (execution: default, phase: process-classes)
    - Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:aspectj-maven-plugin:1.0:test-compile (execution: default, phase: process-classes)

我正在运行Eclipse3.6.2和M2E0.13。我不是Maven专家,所以如果可能的话,请解释细致一些。

我还通过this update site尝试过m2e 1.0.0,但仍然得到了相同的错误。

查看最佳答案

测试完成后自动生成allure report

我想在完成测试后自动生成allure report。我知道在测试之后可以手动运行mvn site来创建报告,但是如果能够自动生成就太好了。下面是我的pom.xml

                <properties>
                  <testng.congig>${selenium.suite}</testng.congig>
                  <aspectj.version>1.7.4</aspectj.version>
                  <allure.version>1.4.3</allure.version>
                </properties>

              <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.14</version>
                <configuration>
                    <testFailureIgnore>false</testFailureIgnore>
                    <argLine>
                        -javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
                    </argLine>
                    <suiteXmlFiles>
                        <suiteXmlFile>target\test-classes\${testng.congig}</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

            <dependency>
              <groupId>ru.yandex.qatools.allure</groupId>
              <artifactId>allure-testng-adaptor</artifactId>
              <version>${allure.version}</version>
           </dependency>

           <reporting>
             <excludeDefaults>false</excludeDefaults>
             <plugins>
              <plugin>
                 <groupId>ru.yandex.qatools.allure</groupId>
                 <artifactId>allure-maven-plugin</artifactId>
                 <version>{latest.version}</version>
               </plugin>
             </plugins>
           </reporting>


查看最佳答案

IntelliJ检查给出"Cannot resolve symbol",但仍然编译代码。

平台:IntelliJ Community Edition 10.0.3
sdk:jdk1.6.0_21
OS:windows 7

IntelliJ有一个奇怪的情况,这让我完全困惑。我设置了一个Maven项目,并将log4j作为一个依赖项添加到pom.xml文件中。IDEA检查运行良好,我的单元测试全部编译并运行。

我使用mvninstall:install-file将hunnysoft的jMIE库添加到本地maven存储库,如下所示。


mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \
-DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar


Maven将jar文件安装到我的本地存储库中。

然后进入IntelliJ的Settings=>Maven=>RepositoryServices并更新本地存储库(以便IntelliJ重新索引存储库内容)。

<dependency>
    <groupId>jmime</groupId>
    <artifactId>jmime</artifactId>
    <version>3.1.1e</version>
</dependency>

我现在创建一个新类,如下所示:

package com.stackoverflow.question;

import org.apache.log4j.Logger;
import com.hunnysoft.jmime.ByteString;
import com.hunnysoft.jmime.Field;
import com.hunnysoft.jmime.FieldBody;

public class StackOverflowQuestion {
    public Field create(String name, String text) {
        Logger.getLogger(getClass()).debug("create entered");
        FieldBody body = new FieldBody();
        body.setText(new ByteString(text));
        Field field = new Field();
        field.setFieldName(name);
        field.setFieldBody(body);
        return field;
    }
}

奇怪的事情发生了。IntelliJ能够很好地识别maven pom文件中的Logger导入。但是,对于所有的hunnysoft导入,它都报告:"Cannot resolve symbol 'ByteString/Field/FieldBody",但是Build=>Compile‘ StackOverflow Question.java’却正确编译,并且我为该类创建的单元测试运行良好(尽管也将create()标记为一个问题区域)。


所以在某处,IntelliJ忽略了jmime.jar文件。我很困惑,因为log4j依赖工作正常,一切编译运行正常。F12(“转到声明”)适用于Logger导入,但会中断所有jmime导入。


哦,还有一件事,如果我转到"Projects"窗口中的‘Packages’视图,就会出现"com.hunnysoft.jmime"包,并且我可以看到我在上面的代码片段"库"下导入的所有类。从头文件中删除上面的依赖会导致这个包消失,编译中断。

检查的类路径似乎被破坏了,但是在Settings=&gt;意图的Compiler区域中似乎没有设置这个设置(不是我所期望的那样),作为最后的实验,我创建了一个全新的标准J2SE应用程序项目(不使用maven),并将jmime.jar文件直接作为其库添加到项目中。在这个新项目中,我遇到了完全相同的问题。

这里是jMIMEJAR文件中的MANIFEST.MF。

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4
Created-By: 10.0-b23 (Sun Microsystems Inc.)

Name: com/hunnysoft/jmime/
Sealed: true
Specification-Title: Hunny JMIME
Specification-Version: 3.1.1
Specification-Vendor: Hunny Software, Inc.
Implementation-Title: com.hunnysoft.jmime
Implementation-Version: 3.1.1E
Implementation-Vendor: Hunny Software, Inc.

我没有发现这个JAR文件中有什么不寻常的地方。

我最好的猜测是,这个问题可能是缺少依赖关系的问题。但是AFAIKjMIME应该是独立的(JarAnalyzer没有想出任何东西,但我不确定如果缺少依赖JAR,它会不会)

所以,有人有什么想法吗?

查看最佳答案