Eclipse擦除我的.classpath

时间:2013-12-10 14:18:44

标签: java eclipse eclipse-kepler

我正在为Web开发人员使用Eclipse Java EE IDE(Kepler Service Release 1),今天早上它开始抛出以下异常:

eclipse.buildId=4.3.0.M20130911-1000
java.version=1.6.0_45
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product -clean -data c:\dev\workspaces\workspace-moneris\

Error
Tue Dec 10 10:10:43 AST 2013
Exception while reading /PC_war/.classpath

java.io.IOException: Bad format
    at org.eclipse.jdt.internal.core.JavaProject.decodeClasspath(JavaProject.java:915)
    at org.eclipse.jdt.internal.core.JavaProject.readFileEntriesWithException(JavaProject.java:2497)
    at org.eclipse.jdt.internal.core.JavaProject.readFileEntries(JavaProject.java:2507)
    at org.eclipse.jdt.internal.core.JavaProject.writeFileEntries(JavaProject.java:2895)
    at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.writeAndCacheClasspath(JavaModelManager.java:1352)
    at org.eclipse.jdt.internal.core.JavaModelManager$PerProjectInfo.writeAndCacheClasspath(JavaModelManager.java:1364)
    at org.eclipse.jdt.internal.core.SetClasspathOperation.executeOperation(SetClasspathOperation.java:77)
    at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:728)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2345)
    at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:793)
    at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3096)
    at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3058)
    at org.eclipse.jdt.internal.core.JavaProject.setRawClasspath(JavaProject.java:3111)
    at org.eclipse.jdt.apt.core.internal.generatedfile.ClasspathUtil.updateProjectClasspath(ClasspathUtil.java:208)
    at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedSourceFolderManager.addToClasspath(GeneratedSourceFolderManager.java:117)
    at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedSourceFolderManager.ensureFolderExists(GeneratedSourceFolderManager.java:192)
    at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedResourceChangeListener.addGeneratedSrcFolderTo(GeneratedResourceChangeListener.java:123)
    at org.eclipse.jdt.apt.core.internal.generatedfile.GeneratedResourceChangeListener.resourceChanged(GeneratedResourceChangeListener.java:92)
    at org.eclipse.jdt.internal.core.DeltaProcessingState$1.run(DeltaProcessingState.java:465)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:460)
    at org.eclipse.core.internal.events.NotificationManager$1.run(NotificationManager.java:291)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285)
    at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:149)
    at org.eclipse.core.internal.resources.Workspace.broadcastBuildEvent(Workspace.java:382)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:139)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

...然后用以下内容替换我的.classpath:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path=".apt_src">
        <attributes>
            <attribute name="optional" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="bin"/>
</classpath>

显然这会导致问题...

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

检查XML声明行中是否有空格:

[no space here]<?xml version="1.0" encoding="UTF-8"?>

答案 1 :(得分:0)

检查XML语法是否有效,例如

  • 在编辑器中打开.classpath文件,突出显示XML语法错误(例如Emacs,但不是Eclipse,具有讽刺意味),
  • 正在运行xmllint --format .classpath