-->

Eclipse Build Error “A class file was not written.

2020-08-10 07:12发布

问题:

I have been struggling with a very weird issue that has suddenly popped up on the latest version of Eclipse Classic (4.2.2).

Everytime I try creating or refactoring a class or subclass in any of my projects (all Java) in my Eclipse workspace I get an error at the very top of my class that says

A class file was not written. The project may be inconsistent, if so try refreshing this project and building it

Again, this happens when I create new classes. And even when I rename current classes, then undo the renaming, its totally fine, but changing a single character in the name causes this error to happen for that specific class.

I have Auto Build on, and I tried multiple times to clean and refresh every project as well as restart Eclipse entirely.

I have literally no idea how to even start figuring out how to fix this. The solutions i've found through search didn't help, so i'm hoping I might find any clues here.

回答1:

I had the same problem and here's how I solved it in the end: It turned out that the disc space on the drive where workspace resides was full.

Silly mistake but worth checking.



回答2:

In my case, this was caused by the fact that the build output directories were owned by a different user, and Eclipse could not write into them.



回答3:

I had the same issues, the following worked for me:

  1. Right click eclipse then running "as an Administrator"
  2. Click Project > Clean.


回答4:

Clean your workspace by starting eclipse from the command line with the -clean argument :

eclipse -clean

See also How to run eclipse in clean mode? and what happens if we do so?



回答5:

We are using Eclipse here too and have to handle a workspace with more than 200 plug-ins. Every now and then people have similar problems with their workspace and inconsistencies reported in a weird way by Eclipse. What people here usually do is (next step only in case previous step didn't help): - trying to ContextMenu->Team->Clean/Refresh the whole workspace - creating a new workspace and check out all necessary files from the repository - reinstalling Eclipse to a new directory

From my experience after using the Eclipse IDE on a daily basis for many years, it doesn't make very much sense to waste too much time with these issues, unless they aren't solved by one of the steps above. It takes too much time to struggle with these things, while starting from scratch is done in an hour or less (and usually fixes the issue). If your Eclipse still behaves strangely it might make sense to go through your installed plug-ins. Not all external plug-ins follow the Eclipse guidelines and can seriously harm the performance and operational consistency of your Eclipse installation (E.g. Sonar Plug-in, Toad Plug-in, ...)



回答6:

In my case this kind of error caused due to disk space got full and it got resolved by just freeing disk space where eclipse have been installed. That is c/d/e drivers.



回答7:

I had the same issue on Mac OS X. I had a maven project.

Try running the following command on Terminal. This looks like an access issue.

sudo mvn clean

Provide password for admin user.

Then open Eclipse and refresh your project.



回答8:

I solved this problem by running Eclipse as root.



回答9:

In my case such error was caused by a question mark in a quoted method name (I use geb+spock combination for automated testing).
So this method name will throw an error "Do you want something?"()
And this will not "Do you want something"()



回答10:

It may not be the best response but to fix it, I've just delete the error marker.



回答11:

Had the same issue. but cleaning the project and restart eclipse didn't help and disk space was not the issue. Solved the issue by copy the code to notepad(just to not lose it) and then delete the class, recreate it and paste the code back in again.



回答12:

I solved it changed the owner of the project files. I changed from root(old owner) to user my current(user that i use with eclipse).



回答13:

Just changed and saved java file to recompile the class. Then error disappeared.



回答14:

I come up with the same error, and in my case, this is because the permission of the project/bin directory is not recursively 775

I fixed it by:

  1. Remove the project/bin directory: sudo rm -rf project/bin
  2. Switch to Eclipse, rebuild the project: Project->Clean...

Then no errors.



回答15:

I was try run

Project->Clean...

And Rebuild. My problem was resolved



回答16:

For linux (Debia) and working on Spring boot project (maven):

$ sudo mvn clean

Then open Eclipse and File -> Refresh.



回答17:

I had same issue, it is something similar but this post didn't help in my case. I have many inner classes which is causing the compiler to create class names with all inner class names together that is creating class name more than 255 character file limit on NTFS! read it in some other blog. I thought it will be helpful to post here.

Ex : classA$InnerClassB$......InncerClassZ.class in target folder it won't generate the class if it exceeds this limit. Try renaming your inner class name shortened. In my case i have to add InnerclassZ as its exceeding its not generating class and Eclipse complaining.

A class file was not written. The project may be inconsistent, if so try refreshing....

I shortened InnerClassZ to IClassZ fixed the issue.



回答18:

Try to launch Eclipse as Administrator.



回答19:

I had the same issue and it got fixed by running eclipse in administrator mode Eclipse Shortcut-->Right click-->More-->Run as Administrator



回答20:

I rand over the same issue. The problem was that the folder the class files go into, was somehow locked. If I tried to open it, it said I didn't have access. But the permissions were correctly set. I restarted the computer and everything worked again.



回答21:

I've been throught that error once when I used wsdl2java to extract java classes from a wsdl, it turns out that all classes were created in the same "class", causing end classes with long names (error - File name too long). When I organized and rename some classes the error disappeared.



回答22:

Before giving a try to the above solutions. Just cleaned the project and it worked.