相关疑难解决方法(0)

将项目导入Eclipse后,"必须覆盖超类方法"错误

任何时候我必须将我的项目重新导入Eclipse(如果我重新安装Eclipse,或者更改了项目的位置),几乎所有重写的方法都没有正确格式化,导致错误:

该方法必须覆盖超类方法

值得注意的是,这是Android项目 - 无论出于何种原因,方法参数值并不总是填充,所以我必须自己手动填充它们.例如:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});
Run Code Online (Sandbox Code Playgroud)

最初将填充如下:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,如果我删除我的代码,并让Eclipse自动重新创建方法,它使用我已经拥有的相同参数名称,所以我真的不知道问题在哪里,除此之外它自动格式化方法我.

这需要手动重新创建所有重写的方法,这变得非常痛苦.如果有人能解释为什么会发生这种情况或如何解决它......我会非常高兴.

也许这是由于我格式化方法的方式,这是在另一个方法的参数内?

java eclipse android overriding superclass

1223
推荐指数
11
解决办法
25万
查看次数

你什么时候使用Java的@Override注释?为什么?

使用Java @Override注释的最佳实践是什么?为什么?

使用@Override注释标记每个重写方法似乎有点过分.是否有某些编程情况需要使用@Override和其他不应该使用的@Override

java annotations

498
推荐指数
17
解决办法
88万
查看次数

为什么Eclipse会在接口方法上抱怨@Override?

我有一个现有的项目,它使用@Override覆盖接口方法的方法,而不是超类方法.我不能在代码中改变这一点,但我想Eclpse停止抱怨的注解,因为我仍然可以使用Maven构建.

我该如何禁用此错误?

注意:由于项目要求,我需要编译Java 1.5.

java eclipse annotations interface syntax-error

132
推荐指数
5
解决办法
10万
查看次数

Maven:javac:源版本1.6需要目标版本1.6

注意:这似乎是"javac"程序中的限制.

我有需要为Java 5 JVM构建的Java 6代码.我之前使用javac ant目标(使用JDK编译器和ecj)的工作使我相信它只是设置javac的源和目标.因此这个pom.xml片段:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.5</target>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

它可以在Eclipse 3.7中使用Maven支持按预期工作.不幸的是,直接从命令行运行Maven给了我

javac: source release 1.6 requires target release 1.6
Run Code Online (Sandbox Code Playgroud)

与生成的相同javac -source 1.6 -target 1.5.为了澄清,这是Ubuntu的官方OpenJDK 6

x@JENKINS:~$ javac -version
javac 1.6.0_20
x@JENKINS:~$ javac -source 1.6 -target 1.5
javac: source release 1.6 requires target release 1.6
x@JENKINS:~$
Run Code Online (Sandbox Code Playgroud)

官方Oracle Java 7 JDK for Windows显示了相同的行为.

注意:我不想构建Java 5库或任何东西.只是活动的javac生成Java 5 兼容的字节码.

如何在仍然与Eclipse Maven插件兼容的同时获得我想要的内容?

(编辑:除了@Override我还想在Java 6中使用JAX-WS库进行编译时使用,但仍然生成Java 5字节代码 - 我可以在部署时故意在Web容器中添加JAX-WS库到Java 5安装)


编辑:事实证明maven-compiler-plugin可以被告知使用另一个编译器,Eclipse编译器可以这样做:

        <plugin>
            <!-- Using the eclipse compiler allows …
Run Code Online (Sandbox Code Playgroud)

java javac maven

26
推荐指数
2
解决办法
5万
查看次数

如何强制使用@Override注释?

是否有一个静态分析工具可以一致地强制使用@Override注释,可以在IDE之外运行?CheckStyle有一个MissingOverride检查,但它只适用于使用@inheritDoc Javadoc标记的方法.我正在寻找一种可以在持续集成机器上的新构建配置中运行的工具.

java continuous-integration static-analysis

24
推荐指数
1
解决办法
2195
查看次数

我可以让Java 5忽略@Override错误吗?

可能重复:
为什么Eclipse会在接口方法上抱怨@Override?

我有一些使用Eclipse和Java 6 SDK编写的Java代码,因此实现接口的方法使用@Override- 注释在Java 6中是合法的,但在Java 5中不是.

我想使用Java 5 SDK(javac在Mac OS X 10.5上)编译相同的代码.除了@Override注释之外,所有内容都编译并运行良好.有什么方法可以让javac忽略@Override这个项目的注释,还是唯一能够将它们全部删除的解决方案?

java overriding annotations

10
推荐指数
2
解决办法
7430
查看次数

Eclipse忽略了错误的@Override注释

出于某种原因,我的一个eclipse安装忽略了错误设置的@Override注释.例如,如果我放置@Override一个不被覆盖的方法,它就完全忽略它.

有关如何将其恢复到错误注释方法会显示错误的状态的任何想法?

java eclipse ide

7
推荐指数
1
解决办法
7545
查看次数

Facebook Android SDK源代码无法使用Eclipse Indigo进行编译

终于等到了Android的Facebook SDK,以正确导入感谢之后这个,我发现,日食不承认的onclick倍率在FbDialog.java:

mCrossImage.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mListener.onCancel();
        FbDialog.this.dismiss();
    }
});
Run Code Online (Sandbox Code Playgroud)

它也不承认ServiceConnection的TokenRefreshServiceConnection实现中onServiceConnected和onServiceDisconnected的覆盖

@Override
public void onServiceConnected(ComponentName className, IBinder service) {
    messageSender = new Messenger(service);
    refreshToken();
}

@Override
public void onServiceDisconnected(ComponentName arg) {
    serviceListener.onError(new Error("Service disconnected"));
    // We returned an error so there's no point in
    // keeping the binding open.
    mAuthActivity.unbindService(TokenRefreshServiceConnection.this);
}
Run Code Online (Sandbox Code Playgroud)

在警告中,所有三种方法都说该方法必须覆盖超类方法.我还没有修改过代码.我检查了Eclipse在相应的超类中识别出类型相同的类型,并且我尝试按control-shift-o来组织导入,这是针对类似问题在此答案中建议的修复.

这些覆盖是SDK的一部分,而不是任何单独的项目.我将项目设置为使用Android SDK 2.2,如Facebook的说明和4.0.3所示,从理论上讲,它应与所有以前的版本兼容.我还没有得到Facebook自己的代码.作为旁注,我可以使用一个罐子吗?它会使这更容易.

android facebook facebook-android-sdk

6
推荐指数
1
解决办法
3458
查看次数

如何在没有使用Maven的外部Jar的情况下配置Annotation Processing API?

我想在我的项目中使用自定义注释.

如何配置maven 3来处理我的注释.AbstractProcessor类的注释和实现嵌入在我的应用程序中.

我的注释仅适用于测试(src/test/java).

状态注释:

@Target(ElementType.METHOD)
public @interface State {
  boolean success() default true;
}
Run Code Online (Sandbox Code Playgroud)

TestAnnotationsProcessor:

@SupportedAnnotationTypes("com.*****.client.State")
public class TestAnnotationsProcessor extends AbstractProcessor {

  @Override
  public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    System.out.print("TESSST ANNOTATION");
    return true;
  }
}
Run Code Online (Sandbox Code Playgroud)

我不想把我的注释放在一个外部项目中......这将是愚蠢的,因为它真的取决于我的项目.

我怎样才能做到这一点 ?谢谢.

java annotations maven

5
推荐指数
1
解决办法
1292
查看次数

对Java 5代码中实现的接口方法的@Override注释没有给出编译错误

POM包含(如/sf/answers/1567929891/中所述):

<profile>
  <id>compileWithJava5</id>
  <!--
    NOTE
    Make sure to set the environment variable JAVA5_HOME
    to your JDK 1.5 HOME when using this profile.
  -->
  <properties>
    <java.5.home>${env.JAVA5_HOME}</java.5.home>
    <java.5.libs>${java.5.home}/jre/lib</java.5.libs>
    <java.5.bootclasspath>${java.5.libs}/rt.jar${path.separator}${java.5.libs}/jce.jar</java.5.bootclasspath>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
          <compilerArguments>
            <bootclasspath>${java.5.bootclasspath}</bootclasspath>
          </compilerArguments>
        </configuration>
      </plugin>
    </plugins>
  </build>
</profile>
Run Code Online (Sandbox Code Playgroud)

$JAVA5_HOME 设置:

• echo $JAVA5_HOME
/usr/lib/jvm/jdk1.5.0_22
Run Code Online (Sandbox Code Playgroud)

据我所知,Java + Maven的神奇之处在于,它应该是maven-compiler-plugin指示JDK 1.8伪装成JDK 1.5并使用Java 5引导类路径的有效咒语.


根据为什么javac在@Override注释上失败,JDK 1.5将不允许接口的已 …

java jdk1.5 cross-compiling maven

3
推荐指数
1
解决办法
743
查看次数

@Override无法在Maven项目中工作

我有几个这样的覆盖方法:

@Override
public int compareTo(Property p) {
    return getText().compareTo(p.getText());
}
Run Code Online (Sandbox Code Playgroud)

作为Java项目,它工作正常,但作为Maven项目,它返回以下错误:

The method compareTo(Property) of type Property must override a superclass method
Run Code Online (Sandbox Code Playgroud)

在研究了这个之后,我想我想把我的JRE系统库(jdk1.6_u25)作为我的POM文件中的依赖项,或者这是一个完全不同的问题?

非常感谢.

java eclipse maven

2
推荐指数
1
解决办法
2622
查看次数

@Override导致涉及接口,抽象类和具体类的类层次结构的问题

我的课程如下

public interface A {
    public void doSomething();
}
public abstract class B implements A {
    public void doOneMoreThing() {
        // Do one more thing
    }
}
public class C extends B {
    @Override                <---- Causes error
    public void doSomething() {
        // Do something
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我,为什么这个@Override注释会导致错误?

谢谢Nayn

java

1
推荐指数
1
解决办法
254
查看次数