How to fix a corrupted JavaScriptCore.framework on Mac OS X 10.7.5
If /System/Library/Framework/JavaScriptCore.framework gets deleted or corrupted on Mac OS X you are in serious trouble. You can't run a browser, you can't start Preview, and more. But restoring it is possible.
To save anyone else the pain of figuring this stuff out here's how I got myself out of this situation. This blog post is boring until you have this problem and end up here because you searched for a solution. Welcome!
First you need to find the 'Client Combo' from Apple for your operating system. In my case that was the OS X Lion Update 10.7.5 (Client Combo). It contains a fresh copy of the JavaScriptCore.framework that just requires extracting and copying into place. Note that you can't just install the combo from the .dmg file because the Apple package manager relies on JavaScriptCore.framework. You have to do everything at the terminal.
Step 1. Download the combo and get it on your machine. For that you need to open Terminal (which you can get via Spotlight as it will still work) and type:
curl -L http://support.apple.com/downloads/DL1582/en_US/MacOSXUpdCombo10.7.5.dmg > MacOSXUpdCombo10.7.5.dmg
That will create a file called MacOSXUpdCombo10.7.5.dmg.
Step 2. Extract the pkg file from inside the dmg. To do this you need to mount it (as it is a volume) by typing
hdiutil attach MacOSXUpdCombo10.7.5.dmg
This should result in the contents being available in /Volumes/Mac OS X 10.7.5 Update Combo. So change to that directory:
cd "/Volumes/Mac OS X 10.7.5 Update Combo"
And you'll find a single file in there: MacOSXUpdCombo10.7.5.pkg.
Step 3. Extract the contents of the pkg file by typing:
pkgutil --expand MacOSXUpdCombo10.7.5.pkg ~/combo
That will extract it into a directory called combo in your home. Go there with
cd ~/combo
Step 4. In that directory you'll find a directory called MacOSXUpdCombo10.7.5.pkg, the JavaScriptCore.framework is in there but needs further extracting like this
cat MacOSXUpdCombo10.7.5.pkg/Payload | gzip -d - | cpio -im
There will now be a System directory which contains the framework needed. Delete the corrupt one and copy the new one into place:
cd System/Library/Frameworks/
sudo rm -rf /System/Library/Frameworks/JavaScriptCore.framework
sudo cp -R JavaScriptCore.framework/ /System/Library/Frameworks/JavaScriptCore.framework
and you should be fixed.
To save anyone else the pain of figuring this stuff out here's how I got myself out of this situation. This blog post is boring until you have this problem and end up here because you searched for a solution. Welcome!
First you need to find the 'Client Combo' from Apple for your operating system. In my case that was the OS X Lion Update 10.7.5 (Client Combo). It contains a fresh copy of the JavaScriptCore.framework that just requires extracting and copying into place. Note that you can't just install the combo from the .dmg file because the Apple package manager relies on JavaScriptCore.framework. You have to do everything at the terminal.
Step 1. Download the combo and get it on your machine. For that you need to open Terminal (which you can get via Spotlight as it will still work) and type:
curl -L http://support.apple.com/downloads/DL1582/en_US/MacOSXUpdCombo10.7.5.dmg > MacOSXUpdCombo10.7.5.dmg
That will create a file called MacOSXUpdCombo10.7.5.dmg.
Step 2. Extract the pkg file from inside the dmg. To do this you need to mount it (as it is a volume) by typing
hdiutil attach MacOSXUpdCombo10.7.5.dmg
This should result in the contents being available in /Volumes/Mac OS X 10.7.5 Update Combo. So change to that directory:
cd "/Volumes/Mac OS X 10.7.5 Update Combo"
And you'll find a single file in there: MacOSXUpdCombo10.7.5.pkg.
Step 3. Extract the contents of the pkg file by typing:
pkgutil --expand MacOSXUpdCombo10.7.5.pkg ~/combo
That will extract it into a directory called combo in your home. Go there with
cd ~/combo
Step 4. In that directory you'll find a directory called MacOSXUpdCombo10.7.5.pkg, the JavaScriptCore.framework is in there but needs further extracting like this
cat MacOSXUpdCombo10.7.5.pkg/Payload | gzip -d - | cpio -im
There will now be a System directory which contains the framework needed. Delete the corrupt one and copy the new one into place:
cd System/Library/Frameworks/
sudo rm -rf /System/Library/Frameworks/JavaScriptCore.framework
sudo cp -R JavaScriptCore.framework/ /System/Library/Frameworks/JavaScriptCore.framework
and you should be fixed.
If you enjoyed this blog post, you might enjoy my travel book for people interested in science and technology: The Geek Atlas. Signed copies of The Geek Atlas are available.





5 Comments:
Thanks! Worked for my MacBook Air running Mountain Lion 10.8.3.
Thanks! Worked for my MacBook Air, Mountain Lion 10.8.3.
This comment has been removed by the author.
For OS X 10.8.3, the relevant update combo is found on http://support.apple.com/kb/DL1640 .
The new Payload (in OS X 10.8.3) is encrypted with bzip2, not gzip. The flag to extract is the same, so just s/gzip/bzip2/ above.
Post a Comment
Links to this post:
Create a Link
<< Home