Re-building a deleted class file in Eclipse

前端 未结 5 1574
走了就别回头了
走了就别回头了 2021-02-09 19:06

I accidentally deleted a .class (Java bytecode) file in my project (on the filesystem, not using Eclipse itself). Easy to fix, right? Just re-build it. But that doesn\'t work! E

相关标签:
5条回答
  • 2021-02-09 19:10

    The OP answered his own question in the comments (2 and a half years ago):

    Found the solution: another project on which that project depended could not be compiled, because it could not be cleaned, because Eclipse wanted to delete the .svn directories throughout that project (I have no idea why), and it could not because some of the files didn't have write permission. I was happy to wipe out all the .svn data just to get this working! Thanks for the hint. – user690075 Sep 7 '11 at 1:25


    In regards to the bounty

    This question has not received enough attention.

    This problem keeps wasting hours of my time.

    IF the OP's answer didn't resolve your issue, you should ask a more specific question on a new post, describing what you've attempted and how the OP's solution didn't resolve your specific issue.

    That being said, assuming you did try the solution the OP posted, it is possible a different issue (that wasn't caused by deleting a class file) is causing the same error. Because you started a bounty on someone else's question and you can't get your prestige back I thought it would be appropriate to mention it might be worth your time to make sure your JDK version(s) are compatible between old or external source code used in your project. You'll get the same error NoClassDefFoundError when the compiler reaches a point in your code that references an object/class that's defined in a library that was developed on an incompatible JDK, it's missing key internal dependencies that are not found within your JDK version.

    I would go into more detail, but since this question is specifically about an error that came about from deleting a class file I don't feel it's right to do so.

    0 讨论(0)
  • 2021-02-09 19:12

    You sure this source file is in your project's source set? Because Eclipse will only compile and put it in your classpath in that case. Right click the project in Package Explorer, Properties -> Java Build Path -> Source. The enclosing folder should be there or Eclipse won't compile it.

    In case, say, this source file of yours was once in source set and was compiled that could explain why it was working up until you removed the binary.

    In order for this problem not to happen I suggest having Scrub output folders when cleaning projects being selected in Java -> Compiler -> Building and Build automatically... on in Project menu.

    Also make sure your project compilation/build succeeds, otherwise Eclipse may not compile all the classes.

    If it still doesn't help it could be important what type of project you are having problems with: Java Project, Maven Project, Gradle Project, etc.

    0 讨论(0)
  • 2021-02-09 19:12

    To the person that put the bount out, maybe you could just commit all your changes to what ever code repository you have, after exiting eclispe just delete the whole workspace, then create a new workspace and re import all the files into the new workspace from your code repository.

    0 讨论(0)
  • 2021-02-09 19:23

    Do a complete clean

    1) Find and delete the .eclipse folder (you may back them up first)

    2) Delete related .class files

    3) If there are any .svn folders, delete them either manually or via your svn client

    4) Do not use auto build for this, but manually select only the broken project and do a clean (in case there are dependencies)

    If that fails, probably a good idea to package your source codes and re-import as a new project. That can avoid wasting time on a probable IDE bug

    0 讨论(0)
  • 2021-02-09 19:28

    In more traditional languages, programs are loaded all at once as part of the startup process. Java doesn’t have this problem because it takes a different approach to loading. This is one of the activities that become easier, because everything in Java is an object. Remember that the compiled code for each class exists in its own separate file. That file isn’t loaded until the code is needed. In general, you can say that “class code is loaded at the point of first use.” This is usually when the first object of that class is constructed, but loading also occurs when a static field or static method is accessed.

    If You can't restore from local history. Then you are out of Luck. Use Source Control Management Tools like SVN or Git to avoid such surprises next time.

    If you are having source file try to compile file along with dependencies alone in console or other IDE and copy that class file let the errors be errors now edit source file in eclipse try to build again. Hopefully this will not work because even eclipse will neglect Re-compiling some files while building Project. Better Give a Try.

    0 讨论(0)
提交回复
热议问题